2012-04-22 5 views
3

自分のサイトでユーザーが自分の送信データを見ることができるようになり、他のユーザーが投稿したデータ(決して一般的な投稿などはありません)を許可することができない場合、サイトに実際にXSSのリスクがありますか?ユーザーが自分のデータだけを見ている場合 - XSSのリスクはありますか?

私はまだXSSソリューション(httmlspecialchars()など)に取り組んでいますが、攻撃者が自分のXSS攻撃を調べて何かを得ることができるのではないかと不思議です。

+1

とにかく可変データをHTMLに入れるときには必ず 'htmlspecialchars()'を使うべきです。そうでなければ、壊れたHTMLで終わるでしょう。 – Brad

+0

ええ、ありがとうBrad - 私はそれらの正確な理由のためにそれを暗示しています – Laurence

答えて

6

攻撃者は、クロスサイトスクリプティング手法を使用して何も取得できません。クロスサイトスクリプティングの目的は、フィッシングやクッキーの閲覧など、悪意のある方法でユーザーに表示されるページ要素を操作することです。つまり、攻撃はクライアント側のエンティティにのみ影響します。

しかし、「自分のデータだけを見ているユーザー」が何を意味しているかを覚えておくことが重要です。

私は、ユーザーがプライベートプロファイルを持ち、自分自身だけが閲覧できるウェブサイトがあるとします。ページにはユーザーがウェブサイトの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攻撃の実行可能性は、特定の実装に依存します。

+0

しかし、リンクをクリックするのを止めることのできないURLの変更は、CSRFのように思えます。私はすでに(特定のフォームを要求していない場合はフォーム提出を拒否することによって)保護していますか? – Laurence

+1

私が与えた例は、あなたが説明したシステムへの攻撃を潜在的にどのように乗り越えることができるかを示したものに過ぎません。反CSRF対策が適切に実施されていることを知っていただければ幸いです。あなたが記述したシステムは、正しく実装されていれば安全ですが、コード化されていないユーザー入力を許可する特定の必要がない限り、私は慎重に誤りを犯します。 –

+0

フォームではない可能性があります。たとえば、XSSをページ番号に含めることができます。第2ページを要求するために記入するフォームはありません。しかし、攻撃者はURLにnumberの代わりにjavascriptを使用できます。 –

1

いいえ、すべてのデータが私的に閲覧されている場合、実際のリスクはありません。 XSSの全体のポイントは、別のユーザーのブラウザでセッションや他の個人情報をハイジャックするためのドライブバイを行うことです。そのような機会がない場合、XSSのようなものはありません。

+0

これは間違っています。理由は他の2つの答えを参照してください理由。 – Brad

+2

いいえ、間違いなく正しいです。受け入れられた答えは、XSS攻撃ではありません。それは何よりもフィッシングの数が多い。 – Jordan

+0

http://en.wikipedia.org/wiki/Cross-site_scripting#Exploit_examples – Brad

1

はい、あなたを完全に保護するわけではありません。それは実際には正常なシナリオです。あなたが考慮しなければならないことは、ハッカーがURLを使用してサイトにXSSを植え付けると、他人にそのURLを開かせると、ユーザーのデータ(Cookie、パスワードなど)が盗まれる可能性があるということです。

+0

しかし、ユーザーAがXSSを自分のデータに埋め込んでいるのは、ユーザーBのみがそのデータを実際に表示できるかどうかです。唯一の方法は、ユーザーBがユーザーAとしてログインしている場合、ユーザーAのデータしか表示されない場合です。 – Laurence

+0

ユーザAだけがそれを見ることができたとしても、ユーザBはコードをページに植え付けることができます。彼はユーザAのキーストロークを追跡し、クッキー情報などを取得し、Ajaxコール経由でどこかのユーザBのサーバに送るために、いくつかのJavascriptを書くことができます。 – McGarnagle

+0

しかし、ユーザーBはユーザーAのデータにどのようにアクセスしますか?彼らは最初にそれを植えるためにユーザーAとしてログインする必要がありますか?したがって、彼らはすでにデータに完全にアクセスできますか? – Laurence

関連する問題