大きな謎: CSRF 攻撃を効果的に防ぐ方法

WBOY
リリース: 2016-06-23 13:56:34
オリジナル
1100 人が閲覧しました

$_SERVER['HTTP_REFERER'] を使用する方法がインターネット上にあります
しかし、いくつかの記事では
リファラーが偽造される可能性があることを指摘しています
たとえば、
header("referer:www.aaa.com" )
……
?>
試してみたところ、ヘッダーを使用して送信したようで、コンソールでリファラーが変更されたことがわかりました。つまり、$_SERVER['HTTP_REFERER'] が空になっているようです。それで、このパラメータは機能しますか?それを防ぐことはできるでしょうか?


ディスカッションへの返信 (解決策)
CSRF は、信頼できるユーザーからのリクエストを偽装することで、信頼できる Web サイトを悪用します

そして、$_SERVER['HTTP_REFERER'] の使用は、偽造される可能性があるため、明らかに許可されていません (あなたもそれを知っています)

フォームの場合は、ランダムな文字列(トークン)または即時発行される認証コードを配置できます
通常のページの場合は、ajax を介してパスワードを取得できます(ajax はクロスドメインではなく、シミュレーション JS 動作技術はより難しいため)
ページ内で後から読み込まれるオブジェクト (画像、js ファイルなど) を介して追加の Cookie 変数を渡すこともできます
受動的防御中に、ページ内の不明な接続をフィルターで除外できます


$ch = curl_init();$opts = array(			CURLOPT_URL 		   => 'http://your web/test.php',			CURLOPT_RETURNTRANSFER => true,			CURLOPT_REFERER		   => 'http://spider.baidu.com/', //伪造referer			CURLOPT_HTTPHEADER	   => array(										"Expect: ",										),			);curl_setopt_array($ch, $opts);$s = curl_exec($ch);
ログイン後にコピー

' で取得した紹介http://your web/test.php' スクリプトは Spider.baidu.com です

偽造とはこれを意味するはずです


PHP 実践 QQ グループ : 33918040 に関連する情報がたくさんあります
わかりました。また勉強してみます~~

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート