2

誰かを非難する前に、何かを確認する必要があります...まあ、言いたくありません。

問題:

ユーザーが画像をアップロードして、サイトのテキストに埋め込むことができます。以前は、ユーザーが画像にホットリンクすることも許可していましたが、サーバーの負荷のため、残念ながらこれを停止する必要がありました。

現在の「解決策」:

プログラマーが「接続が多すぎる」問題を解決するために使用した方法は、画像リクエストを受信して​​処理するファイル (image_request.php) の名前を image_request2.php に変更し、元の内容を次のように置き換えることでした。

<?php
header("HTTP/1.1 500 Internal Server Error") ;
?>

明らかに、これにより元の image_request.php を指している src 属性を持つすべての画像が破損し、この場合送信するコードも間違っています。

提案された解決策:

よりエレガントなソリューションは次のようになると思います。

.htaccess で

  1. リクエストが image_request.php に対するものである場合
  2. リファラーをチェック
  3. リファラーが当社のサイトでない場合は、適切なヘッダーを送信します
  4. リファラーが当サイトの場合、image_request.php に進み、画像リクエストを処理します。

私が知りたいのは:

image_request.php への各リクエストに対して単純に 500 を返す場合と比較して:

上記で概説した代替ソリューションを使用した場合、どれだけの負荷がかかるでしょうか?

これを行うより良い方法はありますか?

私たちの主な関心事は、サイトが稼働し続けることです。内部的にリンクされたすべての画像を破壊することが、これを解決するための最良/唯一の方法であることに同意するつもりはありません。私たちが変更したため、以前にアップロードされたすべてのコンテンツの埋め込みコードを手動で変更する必要があることをユーザーに伝えることを拒否します.

4

4 に答える 4

2

わかりました。Apache の mod_rewrite 機能を使用して、ホットリンクを防止できます。

http://www.cyberciti.biz/faq/apache-mod_rewrite-hot-linking-images-leeching-howto/

于 2010-05-24T11:37:40.147 に答える
1

ModRwrite を使用すると、おそらく PHP スクリプトを実行するよりも負荷が少なくなります。あなたのソリューションはより軽くなると思います。

リファラー ヘッダーが空でない場合は、ステップ 3 でのみアクセスをブロックするようにしてください。一部のブラウザーとファイアウォールはリファラー ヘッダーを完全にブロックしますが、それらをブロックしたくない場合があります。

于 2010-05-24T06:24:13.513 に答える
1

画像のパスを画像のIDとともにデータベースに保存すると思いますよね?次に、データベースに画像 ID を指定して画像パスを照会します。

MemCached をサーバーにインストールして、ユーザー要求をキャッシュすることをお勧めします。PHPで簡単にできます。その後、サーバーの負荷を確認し、このホットリンクを停止する必要があるかどうかを判断します。

于 2010-05-24T08:31:53.820 に答える
1

増加した負荷は、PHP (zilch) での文字列比較の負荷と同じです。

難読化ソリューションは、将来のホットリンクの発生を止めないため、そもそも問題を解決することさえできません。リファラー ヘッダーを確認する場合は、すべての主要なメインストリーム ブラウザーが期待どおりにヘッダーを設定することを絶対に確認してください。これはオプションのヘッダーであり、HTML ドキュメントに埋め込まれた画像の動作はブラウザごとに異なる場合があります。

すべてのリクエストに対してセッションを有効にしている可能性があります(認証されているかどうかに関係なく)-バックアップ計画として、セッションCookieの名前をあいまいなものに変更することもできます(編集:ここでのあいまいさは、Cookieが有効である限り実際には問題になりませんホストのみに設定されています (そして設定されています))、その名前の Cookie が image_request.php に設定されていることを確認します (Cookie が設定されていない場合は、それがサイトへの最初のリクエストであることを示します)。これは、フォールバックまたは冗長性チェックとしてのみ使用してください。リファラーをチェックするよりも悪いです。

マークダウンなどからオンザフライで IMG HTML を生成している場合は、クエリ文字列に有効期限が短い秘密鍵ハッシュ戦略を使用できます。完全に気密ですが、あなたがやっていることはやり過ぎのようです。

また、リソースの可用性についてクライアントに嘘をつくための「適切なヘッダー」はありません;) 404 を送信するだけです。

于 2010-05-24T10:00:57.683 に答える