ユーザーがページにアクセスするたびに追跡する Web ページがあります。これは、誰かがあなたの「プロフィール ページ」にアクセスすると、その訪問が追跡され、あなたに通知される「プロフィール ページ」です。
これは、プロファイル ビューを追跡するstackoverflow のプロファイル ページに似ています(ただし、詳細は異なります)。ユニークな訪問者があなたのプロフィール ページにアクセスするたびに、プロフィール ビュー カウンターが増加します。
ブラウザの Cookie に保存されているランダムに生成されたトークンを使用してユーザーを認証します。そして、これは私がCSRFの大きな問題を抱えている場所です.ランダムなWebサイトは、ユーザーが知らないうちに、ユーザーに代わってWebページにアクセスする可能性があるためです. たとえば、攻撃者の Web ページには、私の Web ページを指す iframe または画像が埋め込まれているだけです。
<img src="http://mysite.com/profile-page">
or
<iframe src="http://mysite.com/profile-page"></iframe>
ユーザーが攻撃者の Web ページにアクセスするときはいつでも、知らないうちに誰かのプロファイル ページにアクセスしていることになります (アクセスはログに記録されます)。
具体的な例を使用して、私の主張を示しましょう。
最近の多くの Web サイトでは、ユーザーが画像 URL を投稿できるようになっています。ユーザーは次のような画像を投稿できます。
<img src="https://stackoverflow.com/users/632951/pacerier">
イメージ タグのsrc
は実際にはイメージ ファイルではありませんが、ブラウザは引き続きリクエストを行い、空のイメージを表示します。
これは、攻撃者がユーザーに代わってhttps://stackoverflow.com/users/632951/pacerierへのリクエストに成功したことを意味します。おそらく、ユーザーはそれを認識していません。
CSRF および XSRF 攻撃の防止 で述べたように、いくつかの非表示の入力フィールドと、「このページをリクエストしてもよろしいですか?」というフォームを追加できます。不利な点は、ページを要求するすべての本物のユーザーが Web ページにアクセスする前にボタンをクリックする必要がありYes, Confirm Request Page、これによりユーザビリティが大幅に損なわれることです。トラッキングを行うすべてのページをユーザーに強制的にクリックさせたくありません。 Confirm
CSRF get リクエストを防ぐためのよりユーザーフレンドリーな方法は他にありますか?
埋め込みページの場合、ドメインhttp://mysite.comからページを要求しないようにブラウザーに指示するにはどうすればよいですか(ブラウザーの URL バーに要求されたページが表示されていません。つまり、それが埋め込み画像、フレーム、iframe などであることを意味します)。 ?