ホットリンクとは、サービスプロバイダー自体がサービスを提供しないコンテンツを指し、技術的手段を通じて他の有益なエンドユーザーインターフェイス(広告など)を回避し、他のサービスプロバイダーのコンテンツを自社のWebサイトでエンドユーザーに直接提供します。サービス コンテンツ、エンド ユーザーの閲覧率およびクリック率を欺く。受益者はリソースをまったく提供しないか、ほとんど提供しませんが、実際のサービスプロバイダーは何の利益も受け取りません。ホットリンクの防止は、すべての Web サイト開発者にとって重要なタスクです。
アンチホットリンクを適切に実行すると、Web サイトサーバーにかかる負荷を大幅に軽減できます。ここでは、phpアンチホットリンクの実装方法を共有します:
一般的なダウンロード手順: 検索 -> 検索結果リストの出力 - > ソフトウェアの詳細ページに入る -> ダウンロードボタンをクリック -> ダウンロードページを開く -> ダウンロードをクリックしてダウンロードを開始します
私の方法はダウンロードページで大騒ぎすることです
まず $key=sdkfjwojf32413 を定義しますウェブサイトの公開ファイルにあるキーに相当します
ダウンロードページで乱数を生成します: $certcode = '84615354' (生成される値は開くたびに異なります)
その後、上記の 2 つの変数を使用しますソフトウェアの ID を入力して md5() 暗号化文字列
を生成し、ソフトウェアの実際のダウンロード アドレスを生成します: file.php?id=5&codekey=ksfjwofsdkfsf
ここでの ID はソフトウェアの番号です。 $codekey=md5($id.$certcode.$key ) に基づいてデータベースからソフトウェア アドレスを見つけます
次に、certcode をセッションに保存し、
file.php のパラメータでコードキーと ID を取得し、取得しますパブリック ファイルから $key を取得し、セッションから $certcode を取得します
コードキーが正しいかどうかを確認し、間違っている場合は終了し、そうでない場合は次の操作を実行します
1. セッションを削除します (このアドレスを開きます)。再度無効となります)
2. データベースからソフトウェアのアドレスを読み込み、ソフトウェアの内容を読み出して出力します(PHPを使用します。ファイルの読み込み方法は、ダウンロードアドレスを直接与えるのではなく、ダウンロードするソフトウェアの内容を出力します)
このように、ダウンロードしたい場合は、自分のダウンロードページを開き、自分のダウンロードページからダウンロードするアドレスを開く必要があり、生成される乱数が異なるため、ダウンロードアドレスは毎回異なります
他の場所のダウンロード アドレスに接続すると、ダウンロードできません。
詳細な読み方 (具体的な実装):
1. 単純なホットリンク防止
<ol class="dp-c"> <li class="alt"><span><span class="vars">$ADMIN</span><span>[defaulturl] = </span><span class="string">"http://www.vvschool.cn/404.htm"</span><span>;//盗链返回的地址 </span></span></li> <li> <span class="vars">$okaysites</span><span> = </span><span class="keyword">array</span><span>(</span><span class="string">"http://www.vvschool.cn/"</span><span>,</span><span class="string">"http://www.siyizhu.com"</span><span>); //白名单 </span> </li> <li class="alt"> <span class="vars">$ADMIN</span><span>[url_1] = </span><span class="string">"http://www.vvschool.cn/temp/download/"</span><span>;//下载地点1 </span> </li> <li> <span class="vars">$ADMIN</span><span>[url_2] = </span><span class="string">""</span><span>;</span><span class="comment">//下载地点2,以此类推 </span><span> </span> </li> <li class="alt"><span> </span></li> <li> <span class="vars">$reffer</span><span> = </span><span class="vars">$HTTP_REFERER</span><span>; </span> </li> <li class="alt"> <span class="keyword">if</span><span>(</span><span class="vars">$reffer</span><span>) { </span> </li> <li> <span class="vars">$yes</span><span> = 0; </span> </li> <li class="alt"> <span class="keyword">while</span><span>(list(</span><span class="vars">$domain</span><span>, </span><span class="vars">$subarray</span><span>) = each(</span><span class="vars">$okaysites</span><span>)) { </span> </li> <li> <span class="keyword">if</span><span> (</span><span class="func">ereg</span><span>(</span><span class="vars">$subarray</span><span>,</span><span class="string">"$reffer"</span><span>)) { </span> </li> <li class="alt"> <span class="vars">$yes</span><span> = 1; </span> </li> <li><span>} </span></li> <li class="alt"><span>} </span></li> <li> <span class="vars">$theu</span><span> = </span><span class="string">"url"</span><span>.</span><span class="string">"_"</span><span>.</span><span class="string">"$site"</span><span>; </span> </li> <li class="alt"> <span class="keyword">if</span><span> (</span><span class="vars">$ADMIN</span><span>[</span><span class="vars">$theu</span><span>] AND </span><span class="vars">$yes</span><span> == 1) { </span> </li> <li> <span>header(</span><span class="string">"Location: $ADMIN[$theu]/$file"</span><span>); </span> </li> <li class="alt"> <span>} </span><span class="keyword">else</span><span> { </span> </li> <li> <span>header(</span><span class="string">"Location: $ADMIN[defaulturl]"</span><span>); </span> </li> <li class="alt"><span>} </span></li> <li> <span>} </span><span class="keyword">else</span><span> { </span> </li> <li class="alt"> <span>header(</span><span class="string">"Location: $ADMIN[defaulturl]"</span><span>); </span> </li> <li><span>}?> </span></li> </ol>
使用法: 上記のコードを dao4.php として保存します。たとえば、テストに使用した validatecode.rar は私のサイト http:/ にあります。 /vvschool .cn/temp/download、次のコードを使用してダウンロード リンクを表します
File name?site=1&file=file
2. サーバーのホットリンク防止方法
3.
<ol class="dp-c"> <li class="alt"><span><span class="comment">//放置下载软件的根目录相对于当前脚本目录的相对目录 </span><span> </span></span></li> <li> <span class="vars">$fileRelPath</span><span> = </span><span class="string">"../../software"</span><span>; </span> </li> <li class="alt"> <span class="comment">//例外允许连接的网址,注意:自身域名不需要填入,设定为肯定可以下载, </span><span> </span> </li> <li> <span class="comment">// 空字符串("")表示直接输入网址下载的情况 </span><span> </span> </li> <li class="alt"> <span class="vars">$excludeReferArr</span><span> = </span><span class="keyword">array</span><span>(</span><span class="string">"www.wreny.com"</span><span>, </span><span class="string">"wreny.com"</span><span>); </span> </li> <li> <span class="func">chdir</span><span>(</span><span class="vars">$fileRelPath</span><span>); </span> </li> <li class="alt"> <span class="vars">$fileRootPath</span><span> = </span><span class="func">getcwd</span><span>() .</span><span class="string">"/"</span><span>; </span> </li> <li> <span class="vars">$filePath</span><span>=</span><span class="vars">$HTTP_GET_VARS</span><span>[</span><span class="string">"file"</span><span>]; </span> </li> <li class="alt"> <span class="vars">$url</span><span>=</span><span class="func">parse_url</span><span>(</span><span class="vars">$_SERVER</span><span>[</span><span class="string">"HTTP_REFERER"</span><span>]); </span> </li> <li> <span class="keyword">if</span><span>(</span><span class="vars">$url</span><span>[host]!=</span><span class="vars">$_SERVER</span><span>[</span><span class="string">"HTTP_HOST"</span><span>] && !in_array(</span><span class="vars">$referHost</span><span>, </span><span class="vars">$excludeReferArr</span><span>)){ </span> </li> <li class="alt"><span>?> </span></li> </ol>
実際には、多くのホットリンク対策方法があります。参考までに、一般的なアイデアを示します。 ⑴ ISAPI_Rewrite を使用した IIS ホットリンク対策は、Windows でのホットリンク対策のソリューションとして使用できます。ホットリンカー(写真) ホットリンカーは透かしを追加することで目的を達成できますが、自分の Web サイトを宣伝することもできます。