ホームページ  >  記事  >  バックエンド開発  >  PHP におけるアンチホットリンクの基本的な考え方とアンチホットリンクの設定方法_PHP チュートリアル

PHP におけるアンチホットリンクの基本的な考え方とアンチホットリンクの設定方法_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-20 10:57:13888ブラウズ

ホットリンクとは、サービスプロバイダー自体がサービスを提供しないコンテンツを指し、技術的手段を通じて他の有益なエンドユーザーインターフェイス(広告など)を回避し、他のサービスプロバイダーのコンテンツを自社の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 サイトを宣伝することもできます。


www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/445799.html技術記事ホットリンクとは、サービスプロバイダー自体がサービスを提供せず、技術的手段を使用して他の有益なエンドユーザーインターフェイス(広告など)をバイパスし、自社のWebサイトでエンドユーザーに直接提供するコンテンツを指します...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。