ホームページ >バックエンド開発 >PHPチュートリアル >PHP 偽リファラー 画像のホットリンクを防ぐためにリファラーを使用する

PHP 偽リファラー 画像のホットリンクを防ぐためにリファラーを使用する

WBOY
WBOYオリジナル
2016-07-25 08:54:361366ブラウズ
  1. # don.com からのアクセスのみを許可します。画像は don.com Web サイトのページに配置される可能性があります
  2. setenvifnocase Referer "^http://www.don.com/" local_ref
  3. # 経由で直接アクセスしますアドレス
  4. setenvif リファラー "^$" local_ref
コードをコピー

次に、マークされたアクセスのみが許可されることを規定します。

  1. 順序許可、拒否
  2. env=local_refから許可
  3. または
  4. <ディレクトリ/web/images>
  5. 順序拒否,allow
  6. すべてから拒否
  7. env=local_refから許可
コードをコピー

リファラーの場所を使用しない

認証やその他の非常に重要なチェックにはリファラーを使用しないでください。リファラーは、上で紹介した Firefox 拡張機能、privoxy、さらには libcurl 呼び出しを通じて、クライアント側で非常に簡単に変更されるため、リファラー データは非常に重要です。信用できません。 特定の入り口ページへのアクセスを制限したい場合は、リファラーを使用するのではなく、セッションを使用して入り口ページにセッションを記述し、ユーザーがその入り口ページにアクセスしていない場合は他のページで確認することをお勧めします。対応するセッションが存在しない場合は、ここでの説明を参照してください。ただし、上で述べたように、この方法の「検証」結果を過信しないでください。 個人的には、リファラーの最も一般的な用途は、ホットリンクの防止に使用されることに加えて、ユーザーがどのリンクからアクセスしたかなどのアクセス統計であると感じています。

http-referer 変数はますます信頼性が低くなり、偽装される可能性があります。 偽装する方法は次のとおりです。 php (curl がインストールされている場合):

  1. $ch =curl_init();
  2. curl_setopt ($ch,curlopt_url, "http://www.d.cn/xxx.asp");
  3. curl_setopt ($ch,curlopt_referer, "http:/ /www.d.cn/");
  4. curl_exec ($ch);
  5. curl_close ($ch);
コードをコピー

php (curl をインストールせずに Sock を使用)

  1. $server = 'www.dc9.cn';
  2. $host = 'www.dc9.cn';
  3. $target = '/xxx.asp';
  4. $referer = 'http://www .d.cn/'; // リファラー
  5. $port = 80;
  6. $fp = fsockopen($server, $port, $errno, $errstr, 30);
  7. if (!$fp)
  8. {
  9. echo "$ errstr ($errno)
    n";
  10. }
  11. else
  12. {
  13. $out = "get $target http/1.1rn";
  14. $out .= "host: $hostrn";
  15. $out . = "cookie: aspsessionidsqtbqsda=dfcapklbbfidafmhnkigkegrn";
  16. $out .= "リファラー: $refererrn";
  17. $out .= "接続: Closenrn";
  18. fwrite($fp, $out);
  19. while (!feof($fp ))
  20. {
  21. echo fgets($fp, 128);
  22. }
  23. fclose($fp);
  24. }
  25. javascript
  26. xmlhttp.setrequestheader("referer", "http://url");// はは〜偽物~
コードをコピー

js はサポートされていません^_^

原則は、sock がデータを送信するために http ヘッダーを構築することです。 Perl などの他の言語も使用できます。現在、偽造されたリファラーを防御する最も簡単な方法は、検証コード (セッション) を使用することです。 現在、uudog、linkgate、virtualwall などのホットリンク ソフトウェアを防止できる商用企業がいくつかありますが、これらはすべて IIS 用の DLL として開発されています。 Cookie 検証とスレッド制御を使用するものや、ファイル名をランダムに生成して URL 書き換えを実行できるものもあります。いくつかの方法では実際に良い結果が得られます。



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。