ホームページ >バックエンド開発 >PHPチュートリアル >ダウンロード アドレスの盗難防止を判断するにはどうすればよいですか? ぜひご覧ください。

ダウンロード アドレスの盗難防止を判断するにはどうすればよいですか? ぜひご覧ください。

WBOY
WBOYオリジナル
2016-06-23 14:26:441073ブラウズ

アップロード用に 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>';        }


その時点でこれが起こります ユーザーが 20:59:59'' にダウンロード ページにアクセスし、クリックしてダウンロード

しかし、クリック後の時間は 21: 00:01 が原因でハッシュ値が異なり、ダウンロードできません。

解決方法。 。

ディスカッションに返信(解決策)

なんで誰もいないんだ!

上記はハッシュ値の生成に時間を使用していますが、それを防ぐ他の方法はありますか?

生成された $hash は Cookie を介して渡され、有効期間が長すぎないようにセッションに保存する必要があります。

チェック時に再生成されず、Cookie 内に存在するかどうかだけをチェックし、セッションと比較します


チェックコードと同じように

生成された $hash は Cookie を介して渡される必要があります。有効期限が長すぎず、チェック時にセッション

に保存されます 再生成せず、Cookieに存在するかどうかのみ確認し、セッションと比較します


チェックコードと同じです

もっと簡単な方法を見つけてください

if(strpos($_SERVER['HTTP_REFERER'],'http://www.domain.com') == 0)
ソース判断で判断できるかはわかりませんアドレス

生成された $hash は Cookie を介して渡され、あまり長くない有効期間を持ち、セッションに保存される必要があります

チェック時に再生成せず、Cookie にあるかどうかのみを確認し、それと比較しますセッション

チェックコードと同じです

より簡単な方法を見つけてください

if(strpos($_SERVER['HTTP_REFERER'] ,'http://www.domain.com') == 0)
I送信元アドレスを判断して判断できるかはわかりません
これは偽造可能です

HTTP_REFERER は偽造可能です

Basic認証を参照できます。

一方、ブラウザのシミュレートも話題です。つまり、これは道徳が悪魔よりも優れているという問題です。盗難防止機能は通常のホットリンクを防止することしかできませんが、Web ブラウジングをシミュレートするプログラムの使用を完全に防止することはできません。

したがって、悪役ではなく紳士を警戒し、ホットリンクを防ぐためにリファラーを使用することをお勧めします。

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