私のサイトが a.com で、画像が a.com/123.png であるとします。
b.com この画像を使用する場合、http_referer とは何ですか?
次に、アドレス バーに a.com/123.png を直接入力します。 . http_referer は b.com です
私が聞きたいのは、画像が他のサイトから参照されているか、ユーザーが直接アクセスしているかを判断する方法です。
Request.ServerVariables["HTTP_REFERER"]
Request.ServerVariables["HTTP_REFERER"].ToString().Contains(Request.ServerVariables["HTTP_HOST"].ToString())
外部リンクをクリックすると、HTTP_REFERER にはこの Web サイトのホストアドレスも伝えられます
判断するための IF ステートメントを追加します。次に、tostring がアドレスに解析され、カウンターを使用して判断できます
ブラウザに直接入力 HTTP_REFERER は空です
ページからのリンク HTTP_REFERER はそのページの URL です
ただし、 HTTP_ プレフィックスは訪問者です。ただし、信頼性は非常に低いです
判断するには HTTP_REFERER のみに頼ることができますが、これはあまり信頼性が高くなく、偽造される可能性があります。
Request.ServerVariables["HTTP_REFERER"]
Request.ServerVariables["HTTP_REFERER"].ToString().Contains(Request.ServerVariables["HTTP_HOST"].ToString())
外部リンクを入力するとき、HTTP_REFERER もこの Web サイトのホスト アドレスについては、IF 文を追加して判断してください。次に、tostring がアドレスに解析され、カウンターを使用してそれを決定できます
ヒーローの PHP バージョンはありますか
内部のパラメーターについては、あるようです。たくさん。入力して見てください。
header("content-type:text/html; charset=utf-8");
if(isset($_SERVER['HTTP_REFERER'][
])){
//$ を判断する_SERVER['HTTP_REFERER' は http://localhost/test/
で始まりますか? //そうであれば、この Web サイトを意味し、そうでなければ、この Web サイトではないことを意味します。
if(strpos($_SERVER['HTTP_REFERER '],"http://localhost/test/")==0){
echo 'これはこのサイトへの訪問です'
}else{
//警告ページにジャンプします
header('Location: warning.php');
}
}else{
// 警告ページに移動
header('Location:warning.php');
}
上記のコードは私が書いたアンチホットリンクコードです。このコードを見ることで問題を解決できます。 Chuanzhi ポッドキャストの講義 84 ハン・シュンピンの PHP ビデオ シリーズでは、この反リーチングの問題について説明しています。より明確に理解できるようになります。