-
- # don.com からのアクセスのみを許可します。画像は don.com Web サイトのページに配置される可能性があります
- setenvifnocase Referer "^http://www.don.com/" local_ref
- # 経由で直接アクセスしますアドレス
- setenvif リファラー "^$" local_ref
-
コードをコピー
次に、マークされたアクセスのみが許可されることを規定します。
-
- 順序許可、拒否
- env=local_refから許可
- または
- <ディレクトリ/web/images>
- 順序拒否,allow
- すべてから拒否
- env=local_refから許可
コードをコピー
リファラーの場所を使用しない
認証やその他の非常に重要なチェックにはリファラーを使用しないでください。リファラーは、上で紹介した Firefox 拡張機能、privoxy、さらには libcurl 呼び出しを通じて、クライアント側で非常に簡単に変更されるため、リファラー データは非常に重要です。信用できません。
特定の入り口ページへのアクセスを制限したい場合は、リファラーを使用するのではなく、セッションを使用して入り口ページにセッションを記述し、ユーザーがその入り口ページにアクセスしていない場合は他のページで確認することをお勧めします。対応するセッションが存在しない場合は、ここでの説明を参照してください。ただし、上で述べたように、この方法の「検証」結果を過信しないでください。
個人的には、リファラーの最も一般的な用途は、ホットリンクの防止に使用されることに加えて、ユーザーがどのリンクからアクセスしたかなどのアクセス統計であると感じています。
http-referer 変数はますます信頼性が低くなり、偽装される可能性があります。
偽装する方法は次のとおりです。
php (curl がインストールされている場合):
-
- $ch =curl_init();
- curl_setopt ($ch,curlopt_url, "http://www.d.cn/xxx.asp");
- curl_setopt ($ch,curlopt_referer, "http:/ /www.d.cn/");
- curl_exec ($ch);
- curl_close ($ch);
コードをコピー
php (curl をインストールせずに Sock を使用)
-
- $server = 'www.dc9.cn';
- $host = 'www.dc9.cn';
- $target = '/xxx.asp';
- $referer = 'http://www .d.cn/'; // リファラー
- $port = 80;
- $fp = fsockopen($server, $port, $errno, $errstr, 30);
- if (!$fp)
- {
- echo "$ errstr ($errno)
n";
- }
- else
- {
- $out = "get $target http/1.1rn";
- $out .= "host: $hostrn";
- $out . = "cookie: aspsessionidsqtbqsda=dfcapklbbfidafmhnkigkegrn";
- $out .= "リファラー: $refererrn";
- $out .= "接続: Closenrn";
- fwrite($fp, $out);
- while (!feof($fp ))
- {
- echo fgets($fp, 128);
- }
- fclose($fp);
- }
- javascript
- xmlhttp.setrequestheader("referer", "http://url");// はは〜偽物~
-
コードをコピー
js はサポートされていません^_^
原則は、sock がデータを送信するために http ヘッダーを構築することです。 Perl などの他の言語も使用できます。現在、偽造されたリファラーを防御する最も簡単な方法は、検証コード (セッション) を使用することです。
現在、uudog、linkgate、virtualwall などのホットリンク ソフトウェアを防止できる商用企業がいくつかありますが、これらはすべて IIS 用の DLL として開発されています。
Cookie 検証とスレッド制御を使用するものや、ファイル名をランダムに生成して URL 書き換えを実行できるものもあります。いくつかの方法では実際に良い結果が得られます。
|