2016-12-22 5 views
2

IE7エミュレータの一般的なWebサイトで以下のスタイル属性を追加すると何も起こりませんが、IE7エミュレータの簡単なWebサイトから実行すると実行されます。CSSからのJavaScriptの実行をブロックする

<body style="width: expression(alert())"> 

どのように表現が実行されないようにできますか?

+0

IE 7で実行されないようにする方法や、まだサポートされているブラウザで実行されないようにする方法は? – user3553031

+0

ie7は、Microsoftの視点からは長らく死んでいます。 –

+0

これは本当にXSSの問題ですか?サイトのユーザーがスタイルを編集できるようにしますか? – nnnnnn

答えて

0

あなたが話している機能はDynamic Propertiesと呼ばれ、IE8ではサポートされなくなりました。

ダイナミックプロパティ(CSS表現とも呼ばれます)は、Internet Explorer 8以降、IE8標準モード以上ではサポートされなくなりました。この決定は、標準の準拠、ブラウザのパフォーマンス、およびセキュリティ上の理由から行われました。動的プロパティは、IE7モードまたはIE5モードのInternet Explorer 8で引き続き使用できます。 IE8モードのInternet Explorer 8は、カスケーディングスタイルシート、レベル2リビジョン1(CSS2.1)標準に完全に準拠しているため、カスケーディングを回避するために書かれたほとんどの動的プロパティ以前のバージョンのInternet Explorerのスタイルシート(CSS)関連の欠点はもう必要なくなりました。より具体的な用途の他の動的プロパティは、一般的に標準のJavaScriptに置き換えることができます。 現代ブラウザで予期しない場所に注入されたJavaScriptに対する緩和策として

+0

これはどのように動作するのか、それを防ぐ方法IE7で? – nnnnnn

+0

私はそれがサポートされておらず、非難されていることを知っている、私は彼らが5年前にこれをどのように修正したか知りたい。この種の問題はIE9まではまだHTCに存在しています – gr3g

1

content security policyを使用しています。たとえば、CSPがscript-src: none;の場合、どこのページに関係なく、ページ内のすべてのJavaScriptの実行が拒否されます。より詳細なポリシーは、特定のURIからのJavaScriptのみ、または特定のハッシュを持つスクリプトのみを許可するように設計できます。

+0

これはXSSには適していますが、ここでは悪意のあるコードは「自己」に由来しています。しかし、それは良いリソースです、ありがとう! – gr3g

+0

JavaScriptの実行を 'self'から拒否することも、既知のハッシュを持つスクリプトだけを許可することもできます。これは一般的にXSS予防のための良い習慣です。 – user3553031

+0

これはIE11からしか動作しないので、 'HTC'や' expression'が実行されるのを防ぐことはできません。しかし、私はそれが防衛の最初のレベルであることに同意します!あなたのJavascriptコードは 'self'からのjavascriptの実行を拒否すると実行されますか、JSFアプリケーションの' self'オプションですか? – gr3g

関連する問題