ホームページ  >  記事  >  バックエンド開発  >  PHPでホットリンクを禁止する方法

PHPでホットリンクを禁止する方法

藏色散人
藏色散人オリジナル
2020-09-01 10:11:022964ブラウズ

php でホットリンクを禁止する方法: 最初に Web サイトの公開ファイルに「$key=sdkfjwojf32413」を定義し、次にダウンロード ページで乱数を生成し、次に md5 暗号化文字列を生成し、最後にソフトウェアの真のバージョン アドレスをダウンロードし、証明書コードをセッションに保存します。

PHPでホットリンクを禁止する方法

推奨事項: 「PHP ビデオ チュートリアル

ホット リンクとは、サービス プロバイダー自体がリンクを行わないことを意味します。サービスのコンテンツは、技術的手段を使用して、他の有益なエンドユーザー インターフェイス (広告など) をバイパスし、エンドユーザーに他のサービス プロバイダーのサービス コンテンツを自社の Web サイト上で直接提供することにより、エンドユーザーの閲覧や閲覧を欺きます。クリックスルー率。受益者はリソースをまったく提供しないか、ほとんど提供しませんが、実際のサービスプロバイダーは何の利益も受け取りません。ホットリンクの防止は、すべての Web サイト開発者にとって重要なタスクです。

ホットリンクの防止を適切に行うと、Web サイト サーバーへの負荷を大幅に軽減できます。ここでは、PHP でホットリンク防止を実装する方法を共有します:

一般的なダウンロード手順:検索→検索結果リストを出力→ソフトの詳細ページに入る→ダウンロードボタンをクリック→ダウンロードページが開く→ダウンロードをクリックしてダウンロードを開始

私の方法は、ダウンロード ページで大騒ぎする

##まず、Web サイトの公開ファイルにキーに相当する $key=sdkfjwojf32413 を定義します。ダウンロード ページ: $certcode = '84615354' (それぞれ、生成されるものは開くたびに異なります)

次に、上記の 2 つの変数とソフトウェアの ID を使用して、md5() 暗号化文字列を生成します

次に、ソフトウェアの実際のダウンロード アドレスを生成します: file.php?id =5&codekey=ksfjwofsdkfsf

ここでの ID はソフトウェア番号であり、それに基づいてデータベースからソフトウェア アドレスを見つけることができます。 $codekey=md5($id.$certcode.$key)

その後、証明書コードをセッションに保存します。

file.php のパラメーターからコードキーと ID を取得し、次から $key を取得します。公開ファイルを作成し、セッションから $certcode を取得します

コードキーが正しいかどうかを確認します。間違っている場合は終了し、そうでない場合は次の操作を実行します

1。セッションを削除します(再度このアドレスを開くと無効になります)

2. データベースからソフトウェアのアドレスを読み込み、ソフトウェアの内容を読み込み、出力します(ソフトウェアの内容はPHPのファイル読み込みメソッドを使用して出力します)

このように、ダウンロードしたい場合は、自分のダウンロード ページを開いて、アドレスからダウンロードする必要があります。アドレスをダウンロードするには、ページを開く必要があります。生成される乱数が異なるため、ダウンロード アドレスは毎回異なります。

他のダウンロード アドレスに接続しても、ダウンロードすることはできません。

拡張読み物 (特定の実装):

1. 単純なホットリンク対策

$ADMIN[defaulturl] = "http://www.vvschool.cn/404.htm";//盗链返回的地址 
$okaysites = array("http://www.vvschool.cn/","http://www.siyizhu.com"); //白名单 
$ADMIN[url_1] = "http://www.vvschool.cn/temp/download/";//下载地点1 
$ADMIN[url_2] = "";//下载地点2,以此类推 
   
$reffer = $HTTP_REFERER; 
if($reffer) { 
$yes = 0; 
while(list($domain, $subarray) = each($okaysites)) { 
if (ereg($subarray,"$reffer")) { 
$yes = 1; 
} 
} 
$theu = "url"."_"."$site"; 
if ($ADMIN[$theu] AND $yes == 1) { 
header("Location: $ADMIN[$theu]/$file"); 
} else { 
header("Location: $ADMIN[defaulturl]"); 
} 
} else { 
header("Location: $ADMIN[defaulturl]"); 
}
ファイル名?site=1&file=ファイルの使用方法: 変更上記のコードは dao4.php として保存されます。たとえば、テストに使用した validatecode.rar がサイトにある場合、ダウンロード接続を表すために次のコードが使用されます。サーバーのリーチング対策

3. ソフトウェア ダウンロードのホットリンク対策方法

//放置下载软件的根目录相对于当前脚本目录的相对目录 
$fileRelPath= "../../software"; 
//例外允许连接的网址,注意:自身域名不需要填入,设定为肯定可以下载, 
// 空字符串("")表示直接输入网址下载的情况 
$excludeReferArr= array("www.wreny.com","wreny.com"); 
chdir($fileRelPath); 
$fileRootPath= getcwd() ."/"; 
$filePath=$HTTP_GET_VARS["file"]; 
$url=parse_url($_SERVER["HTTP_REFERER"]); 
if($url[host]!=$_SERVER["HTTP_HOST"] && !in_array($referHost,$excludeReferArr)){
(1) ISAPI_Rewrite を使用した IIS ホットリンク対策は、次のように使用できます。 Windows でのホットリンク対策のソリューション、実際には盗難防止 リンクにはさまざまな方法がありますが、参考として一般的なアイデアを示します:

(2) 画像のホットリンク対策 画像に透かしを追加しますホットリンカーは目的を達成することはできますが、宣伝目的の Web サイトで自分自身に損害を与えることにもなります。 以上がPHPアンチホットリンクの基本的な考え方と設定方法であり、皆様の学習の一助になれば幸いです。

以上がPHPでホットリンクを禁止する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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