プロが教える店舗&オフィスのセキュリティ対策術

よろしくお願いします。
フレーム中にあるページがあるのですが、そのページのURLを調べて、
直接URL欄に入力しても、そのページにジャンプはできず、
トップページに戻るようになっています。

これは一体どのように行っているのでしょうか?
直リンクを貼られるのを防ぐのにも非常に有効なので、ぜひ知りたいのですが‥。

よろしくお願いします!

A 回答 (4件)

>フレーム中にある


この条件でなら JavaScript でもある程度は出来ます。
JavaScript で親ファイルのアドレスを調べ
想定外のアドレスならトップページへ戻る様に記述すれば良いだけです。

JavaScript が無効の場合はどうするか。
JavaScript が有効である事を必須とするならば無効の時にリダイレクトさせればよい訳で・・・。
noscript に meta の Refresh を記述。

まぁブラウザに JavaScript を無効のリダイレクトも無効とされるとお手上げですが、
直リンク対策が目的ならある程度使えるかも・・・。


尚、閲覧者の操作への対策だったり JavaScript が無効でもフレーム内での適切な閲覧なら表示したいなどという場合は、サーバ側で(リンク元を取得するなど)なんらかの操作をするしかないでしょう。
    • good
    • 0
この回答へのお礼

ありがとうございます。試しに当該のサイトにてJavascriptを無効にしてみると、リダイレクトせず、今までとは違った反応を示しました。
全てがこれで解決した訳ではなさそうですが、すごく前進した気がします。

Javascriptのスキルがまだまだ拙いので、どれぐらい時間がかかるか分かりませんが、
色々試してみたいと思います。
ありがとうござまいした!

お礼日時:2005/11/16 13:41

リファラ見て、403エラーになるようにして・・・


403のメッセージのかわりに、所定のページを表示させるだけで可能。(サーバの設定で、ユーザのディレクトリ内で .htaccess が使えるという条件がありますが。)

その関係のディレクトリ内に .htaccess 置いて、ここに
<Files ~ 該当する被呼ファイルの条件(正規表現) >
SetEnvIf Referer "想定される呼出し元ファイル" ref_ok
order deny,allow
deny from all
allow from env=ref_ok
</Files>

ErrorDocument 403 飛ばす先のページのURL

を置けば済みます。SetEnvIf の行は複数書けます。

応用として、特定のブラウザ等だけ排除/許可したり、特定のアドレスからのアクセスだけ排除/許可したりするのにも利用できます。
私の所では、許可した所以外からの直リンク禁止したり、特定のサイトからの訪問者にのみ「お知らせ」を見せるのに使用しています。

課題は、Refererを返さない設定のユーザの判断。上記であれば、返さない者はすべて禁止されます。リファラ無しは許可するならば、許可条件に "^$" を追加してください。

この回答への補足

なるほど、こちらも簡単で確実そうですね。
.htaccessは使える仕様なので、一度試してみて、お礼に戻ります。
ありがとうございました!すごい!

補足日時:2005/11/16 13:44
    • good
    • 0

簡単なものだとJavaScriptを使用しています。


history.go("http://example.com/");
とページの頭の方で記述し、
一定の条件が満たされていなければトップに戻す
といった事をしているのかと。
    • good
    • 0
この回答へのお礼

ありがとうございます。
おかげさまでJavascriptでもできそうなことが分かりました。
色々試してみたいと思います!

お礼日時:2005/11/16 14:09

それはHTMLだけでは出来ません。


動的にHPの内容を変化させる事の出来るプログラム言語を利用して可能となります。
Perl/CGI、PHP、JSPといった言語がそれにあたります。
それらの言語は、サーバ側で処理を行い、
結果をクライアントに返すという、サーバサイドな言語です。
(HTMLやJavaScriptはクライアントサイドであり、
書かれた内容を動的に変更する事は出来ない)

それら動的言語に持つセッションという管理機能を利用して制御を行います。
トップページから来た時はセッション情報を持っており、
直リンクされた時はセッション情報を持ってない状態になります。というより、そういう作りにします。

つまり、セッション情報がない時、強制的にトップページへ飛ばす、という処理が可能になります。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!