自分のサイトでユーザーが自分の送信データを見ることができるようになり、他のユーザーが投稿したデータ(決して一般的な投稿などはありません)を許可することができない場合、サイトに実際にXSSのリスクがありますか?ユーザーが自分のデータだけを見ている場合 - XSSのリスクはありますか?
私はまだXSSソリューション(httmlspecialchars()など)に取り組んでいますが、攻撃者が自分のXSS攻撃を調べて何かを得ることができるのではないかと不思議です。
自分のサイトでユーザーが自分の送信データを見ることができるようになり、他のユーザーが投稿したデータ(決して一般的な投稿などはありません)を許可することができない場合、サイトに実際にXSSのリスクがありますか?ユーザーが自分のデータだけを見ている場合 - XSSのリスクはありますか?
私はまだXSSソリューション(httmlspecialchars()など)に取り組んでいますが、攻撃者が自分のXSS攻撃を調べて何かを得ることができるのではないかと不思議です。
攻撃者は、クロスサイトスクリプティング手法を使用して何も取得できません。クロスサイトスクリプティングの目的は、フィッシングやクッキーの閲覧など、悪意のある方法でユーザーに表示されるページ要素を操作することです。つまり、攻撃はクライアント側のエンティティにのみ影響します。
しかし、「自分のデータだけを見ているユーザー」が何を意味しているかを覚えておくことが重要です。
私は、ユーザーがプライベートプロファイルを持ち、自分自身だけが閲覧できるウェブサイトがあるとします。ページにはユーザーがウェブサイトのURLを入力できるテキスト入力要素があります。ここで、ユーザーのプロファイルを更新するフォームがGETを使用しているとします。
ページ更新の提出は次のようになります。
http://www.example.com/privateprofile.pl?action=update&userwebpage=http://www.example.net
攻撃者がURLを読み込むにユーザーをだましすることにより、これを悪用:
http://www.example.com/privateprofile.pl?action=update&userwebpage= [malicious_js_code_here]
これは、もちろん、かなり簡単な例ですが、うまくいけばそれは一般的な概念を実証しています。懸念事項は、ユーザーがXSSに入るようにユーザーを騙す可能性があるということです。もちろん、このようなXSS攻撃の実行可能性は、特定の実装に依存します。
しかし、リンクをクリックするのを止めることのできないURLの変更は、CSRFのように思えます。私はすでに(特定のフォームを要求していない場合はフォーム提出を拒否することによって)保護していますか? – Laurence
私が与えた例は、あなたが説明したシステムへの攻撃を潜在的にどのように乗り越えることができるかを示したものに過ぎません。反CSRF対策が適切に実施されていることを知っていただければ幸いです。あなたが記述したシステムは、正しく実装されていれば安全ですが、コード化されていないユーザー入力を許可する特定の必要がない限り、私は慎重に誤りを犯します。 –
フォームではない可能性があります。たとえば、XSSをページ番号に含めることができます。第2ページを要求するために記入するフォームはありません。しかし、攻撃者はURLにnumberの代わりにjavascriptを使用できます。 –
いいえ、すべてのデータが私的に閲覧されている場合、実際のリスクはありません。 XSSの全体のポイントは、別のユーザーのブラウザでセッションや他の個人情報をハイジャックするためのドライブバイを行うことです。そのような機会がない場合、XSSのようなものはありません。
はい、あなたを完全に保護するわけではありません。それは実際には正常なシナリオです。あなたが考慮しなければならないことは、ハッカーがURLを使用してサイトにXSSを植え付けると、他人にそのURLを開かせると、ユーザーのデータ(Cookie、パスワードなど)が盗まれる可能性があるということです。
しかし、ユーザーAがXSSを自分のデータに埋め込んでいるのは、ユーザーBのみがそのデータを実際に表示できるかどうかです。唯一の方法は、ユーザーBがユーザーAとしてログインしている場合、ユーザーAのデータしか表示されない場合です。 – Laurence
ユーザAだけがそれを見ることができたとしても、ユーザBはコードをページに植え付けることができます。彼はユーザAのキーストロークを追跡し、クッキー情報などを取得し、Ajaxコール経由でどこかのユーザBのサーバに送るために、いくつかのJavascriptを書くことができます。 – McGarnagle
しかし、ユーザーBはユーザーAのデータにどのようにアクセスしますか?彼らは最初にそれを植えるためにユーザーAとしてログインする必要がありますか?したがって、彼らはすでにデータに完全にアクセスできますか? – Laurence
とにかく可変データをHTMLに入れるときには必ず 'htmlspecialchars()'を使うべきです。そうでなければ、壊れたHTMLで終わるでしょう。 – Brad
ええ、ありがとうBrad - 私はそれらの正確な理由のためにそれを暗示しています – Laurence