ホームページ >バックエンド開発 >PHPチュートリアル >ダウンロード アドレスの盗難防止を判断するにはどうすればよいですか? ぜひご覧ください。
アップロード用に 2 つの Web サイト、メイン サイトとサブサイトが 1 つあります
メイン サイトの download.php がダウンロード ページです
サブサイトの down.php がダウンロード リンクです
リンクをクリックする必要がありますdownload.php を通じて download
ユーザーが subsite/down.php?fileid=1 に直接アクセスできないようにするために、ファイルをダウンロードして次の判断を行うことができます
download.php にハッシュ値を追加します
$hash = strtoupper(md5('downloadkey'.date('ymdh ')));
down.php はハッシュ値も追加します
$hash2 = strtoupper(md5('downloadkey'.date('ymdh'))); down.php 判定
if($hash<>$hash2){ header("Content-Type: text/html; charset=utf-8"); echo '文件ID: '.$file_id.'<br>'; echo '['.$file_name.'] 文件地址已过期,请返回下载地址重新下载。<br><br>如果仍然出现此问题,请联系管理员<br><br>'; if($pd_gid==1){ echo '<br><br>---------- 以下内容 管理员可见 ---------- <br>'; echo '文件HASH:<font color=blue>'.$hash.'</font><br><br><br>'; echo '文件HASH2:<font color=blue>'.$hash2.'</font><br>'; }
上記はハッシュ値の生成に時間を使用していますが、それを防ぐ他の方法はありますか?
生成された $hash は Cookie を介して渡され、有効期間が長すぎないようにセッションに保存する必要があります。
チェック時に再生成されず、Cookie 内に存在するかどうかだけをチェックし、セッションと比較します
チェックコードと同じように
生成された $hash は Cookie を介して渡される必要があります。有効期限が長すぎず、チェック時にセッション
チェックコードと同じです
もっと簡単な方法を見つけてください
if(strpos($_SERVER['HTTP_REFERER'],'http://www.domain.com') == 0)
ソース判断で判断できるかはわかりませんアドレス
チェック時に再生成せず、Cookie にあるかどうかのみを確認し、それと比較しますセッション
チェックコードと同じです
より簡単な方法を見つけてください
if(strpos($_SERVER['HTTP_REFERER'] ,'http://www.domain.com') == 0)
I送信元アドレスを判断して判断できるかはわかりません
これは偽造可能です
HTTP_REFERER は偽造可能です
Basic認証を参照できます。
一方、ブラウザのシミュレートも話題です。つまり、これは道徳が悪魔よりも優れているという問題です。盗難防止機能は通常のホットリンクを防止することしかできませんが、Web ブラウジングをシミュレートするプログラムの使用を完全に防止することはできません。
したがって、悪役ではなく紳士を警戒し、ホットリンクを防ぐためにリファラーを使用することをお勧めします。