5

次の HTML を含む .cshtml ページがあります。

<div class="content rowBody">
       <span class="rowText" title="@description">                           
              @description                           
       </span>
</div>

@description の値が次の場合: title<img src=x onerror=alert(/XSS/.source)>属性 にこのように表示されて実行されていることがわかりますが、span タグの間の値はエンコードされているように見え、アラート ボックスをトリガーしません。

私の仮定では、Razor エンジン ビューは @ が前にあるものをすべてエンコードしようとするものでした。これは HTML 属性には適用されませんか?

生成されたソース:

<div style="margin-left: 31px;" class="content rowBody unselectable" unselectable="on">
                        <span class="rowText unselectable" title="<img src=x onerror=alert(/XSS/.source)>" unselectable="on">                           
                            &lt;img src=x onerror=alert(/XSS/.source)&gt;                           
                        </span>
                    </div>
4

1 に答える 1

0

ここに表示されているのは、コンテキストに基づいた異なるエンコーディングのようです。HTML タグに必要な出力エンコーディングは、JavaScript と CSS で異なるため、HTML 属性とは異なります。

そうは言っても、クリーンな MVC4 プロジェクトではこの動作を再現できませんでした。どのバージョンを使用していますか?

于 2012-07-06T21:47:07.920 に答える