1

アンチ XSS ライブラリを見ると、通常、HTML コンテンツと HTML 属性のエンコーディングが異なります。たとえば、Microsoft の WPL 実装を使用すると、次のようになります。

<@ Imports Namespace="Microsoft.Security.Application" %>

<span attribute="<%= AntiXss.HtmlAttributeEncode(attrVariable) %>">
    <%= AntiXss.HtmlEncode(contentVariable) %>
</span>

現在、ASP.Net には、これを簡単にするエンコード ハチ刺されが追加されています。

<span attribute="<%: attrVariable %>">
    <%: contentVariable %>
</span>

次に、 web.config で使用するエンコーダーを指定できます。

<system.web>
    <httpRuntime encoderType="AntiXssEncoder, AssemblyName"/>

ここでのエンコーダーは、コンテキストに応じて呼び出すHtmlAttributeEncodeかどうかを知っています。HtmlEncode

私の問題は、実装するスマートクラスがあることですIHtmlString-これは、<%:構文を完全にバイパスするように指示します。ただし、コンテキストに基づいて別の方法でエンコードしたい:

<% var item = GetImplementationOfIHtmlString() %>

<span attribute="<%: item %>"> <!-- attribute encodes -->
    <%: item %>                <!-- HTML encodes -->
</span>

IHtmlString.ToHtmlStringコンテキスト (HTML コンテンツのエンコードまたは属性内) を認識する方法はありますか?

4

1 に答える 1

1

いいえ。カスタム HtmlEncode メソッドの契約では、属性のエンコードにも適している必要があります (属性値が引用符で囲まれている場合)。このように <%: %> 構文は文脈認識を必要としません。

于 2013-01-15T17:04:03.443 に答える