ホームページ >バックエンド開発 >PHPチュートリアル >アクセス元の特定に関する質問

アクセス元の特定に関する質問

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

私のサイトが 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 バージョンはありますか

$_SERVER['HTTP_REFERER']

内部のパラメーターについては、あるようです。たくさん。入力して見てください。

投稿者が言及した問題はホットリンクです。


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 ビデオ シリーズでは、この反リーチングの問題について説明しています。より明確に理解できるようになります。

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