XSS攻撃とスタイル属性 質問する

XSS攻撃とスタイル属性 質問する

次のようなスタイル属性 XSS 攻撃が知られています。

<DIV STYLE="width: expression(alert('XSS'));">

または

<DIV STYLE="background-image: url(javascript:alert('XSS'))">

すべての例私は見た式または URL 機能のいずれかを使用します。基本的に、そのような機能には「(」と「)」が必要です。

スタイル タグをフィルタリングするには、次の方法を検討しています。次の (おおよその) 文法を使用してチェックします。

identifier: [a-zA-Z_][a-zA-Z0-9\-]*
number: [0-9]+
string: '[a-zA-Z_0-9 ]*'
value : identifier | number | string | number + "(em|px)" | number +"%"
entry: identifier ":" value (\s value )*
style: (entry ;)*

したがって、基本的には数値または非常に制限された文字列値 (基本的にはフォント名用) を持つ ASCII プロパティを許可し、call のようなものは使用できないようにします。

問題は、これで十分かどうかです。次のような攻撃は存在するのでしょうか。

<DIV STYLE="this-is-js-property: alert 'XSS';">

そして成功するのか?

このようなテストの XSS 脆弱性について誰か考えられますか?

明確にするために

TinyMCE などの多くのツールがスタイル属性を使用するため、スタイル属性が必要です。無害なスタイル属性をフィルター処理すると、機能が大幅に低下します。

したがって、@import、URL、式などを使用する可能性のあるものをすべて削除して、一般的なケースを渡すことをお勧めします。また、基本的な CSS 構文が適切であることも確認します。

答え

いいえ、クリックジャッキングの脆弱性があるため安全ではありません。

ベストアンサー1

これは機能しません。クリックジャッキング脆弱性。

例:

<a href="http://example.com/attack.html" style="display: block; z-index: 100000; opacity: 0.5; position: fixed; top: 0px; left: 0; width: 1000000px; height: 100000px; background-color: red;"> </a> 

見つかった場所:http://www.bioinformatics.org/phplabware/forum/viewtopic.php?id=164

コードは完全に検証されますが、重大な損害を引き起こす可能性があります。

したがって、経験則として、非常に厳格なホワイト リストを使用するか、スタイル属性を許可しないでください。

おすすめ記事