1

当面の仕事:

Web サイトのユーザーがダウンロードを開始する前にページを表示するようにしたいと考えています。ページを見ていないが、ファイルに直接ホットリンクしようとする場合、ダウンロードが許可される前に Web ページに移動する必要があります。

Cookie を送信し、ダウンロードを開始する前に、(.htaccess 経由で) Cookie が存在するかどうかを確認するという私の考えよりも優れた提案はありますか?

Web ページとダウンロード ファイルは、別のサーバーに配置されます。

環境:

  • すべてのマシンで Apache 2
  • すべてのマシンで PHP 5
  • 「Web ページ」サーバーで利用可能な MySQL 5 (ダウンロード サーバーからのアクセスなし)

Nathan は、私が解決しようとしている問題は何かと尋ねました。実際、それは、たとえばフォーラムからのホットリンクを防止したいということです。ユーザーが帯域幅を使用してサーバーからダウンロードする場合、ダウンロードが開始される前に広告付きのページを表示したいと考えています。完全に安全である必要はありませんが、サーバーの資金を調達するためにいくらかのお金を稼ぐ必要がありますよね? :)

4

6 に答える 6

5

ファイルへのホットリンクを許可する代わりに、Webアクセス可能なルートの外部にファイルを保存します。代わりに、ダウンロードを開始するphpスクリプトにダウンロードリクエストを送信します。要求しているページが読みたいページであることを確認するためのチェックを行うことができます。

于 2008-09-10T17:08:36.447 に答える
2

Apache mod_rewrite RewriteRule はこれを行うことができます。

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://www.example.com/page.html$
RewriteRule file.exe http://www.example.com/page.html [R=301,L]

基本的に、 へのリクエストがリファラーとして送信されfile.exeなかった場合、ユーザーを に 301 リダイレクトします。page.htmlpage.html

于 2008-09-10T17:39:59.773 に答える
1

Cookieの代わりに分散サーバー側のセッションを使用することもできますが、それはおそらく価値があるよりも厄介です。

リファラーがない場合やリファラーが間違っている場合は、リクエストへのアクセスを禁止することもできます。しかし、それはクッキーよりもさらに偽物です。

それはあなたがどれだけ気にするかによるでしょう。

于 2008-09-10T17:05:27.673 に答える
1

ここでの解決策は、解決しようとしている問題によって異なります。直接リンクがフォーラムなどに投稿されないようにするだけの場合は、リファラーを .htaccess でチェックするだけで十分です。もちろん、リファラーは簡単に偽装できるので、誰かがそうするリスクが問題になる場合は、別のことをする必要があります。

もう少し安全なものが必要な場合は、Cookie を使用する必要があります。ファイル サーバーと Web サーバーが別のボックスにあるため、php セッションだけを使用することはできません。しかし、時間のハッシュと秘密の値に基づいて Cookie を作成することはできます。

cookievalue = sha1('secretvalue'.date('z-H'));

ユーザーが実際のファイルを要求すると、ファイルサーバーはこの Cookie を再度生成し、ユーザーと一致することを確認します。つまり、ユーザーが Cookie を偽造しても、1 時間後には無効になるため、秘密の値がわからないため、自分で新しい Cookie を生成することはできません。

于 2008-09-12T14:02:21.293 に答える
0

mod_auth_tokenを使用して、ユーザーが「最近のリンク」を持っていることを確認します。

mod_auth_tokenを使用すると、期限切れのリンクを作成できます。つまり、誰かが既存のリンクを取得して別のWebサイトに投稿することにした場合、このリンクは指定された時間後に期限切れになります。その結果、403 FORBIDDENが発生し、ユーザーをキャッチして、必要なHTMLページにリダイレクトできます。

于 2009-11-17T13:55:33.830 に答える
0

.htaccess 紹介トリックを提案しようとしましたが、これはあまり安全な方法ではありません。カスタムの http-referral を追加して、PHP スクリプトを作成するのは簡単です。そこからダウンロードページに入ると、そのページから来たと認識されます。

これは関連する問題ですか?ダウンロード ページのコンテキストについて教えてください。

于 2008-09-11T21:25:06.510 に答える