2

HTMLに挿入されるサーバー側でJavaScriptをエンコードする必要があります。Microsoft.Security.Application.Encoder.JavaScriptEncode()を使用していますが、ビューソースからは次のようになります。

'var DesignTheme \ x3d \ x7b \ x22StyleId \ x22 \ x3a \ x2235 \ x22、\ x22BackgroundColor \ x22 \ x3a \ x22 \ x23DDF1FA \ x22、\ x22HeaderColor \ x22 \ x3a \ x22 \ x230B70A6 \ x22、\ x22ButtonColor \ x22 \ x22 \ x2347B937 \ x22、\ x22BoxBackgroundColor \ x22 \x3a...。

何が得られますか?エンコードに間違った方法を使用していますか?目標はクロスサイトスクリプティングを防ぐことであり、このjavascriptは、最近のWebサイトのセキュリティスキャンで危険信号を投げかけました。

4

2 に答える 2

4

Microsoft.Security.Application.Encoder.JavaScriptEncode()JavaScript文字列リテラルで使用される信頼できないデータをエンコードすることのみを目的としています。オプションの2番目の引数であるboolean emitQuotes、は、出力文字列の両端に引用符を追加するかどうかを指定します(デフォルトはtrueです)。したがって、たとえば、ASP.NETWebFormsでメソッドを使用する方法は2つあります。

<script>
    <% string nameEnteredByUser = "alert('I am a hacker');"; %>

    var name = <%= Microsoft.Security.Application.Encoder
        .JavaScriptEncode(nameEnteredByUser) %>;
    var nameWithMessage = '<%= Microsoft.Security.Application.Encoder
        .JavaScriptEncode(nameEnteredByUser, false) %>' + ' is a very nice name.';

    console.log(name); //alert('I am a hacker');
    console.log(nameWithMessage); //alert('I am a hacker'); is a very nice name.

</script>
于 2013-05-02T20:28:49.730 に答える
0

System.Web.HttpUtilityでエンコードの1つを探しているのではないでしょうか。

于 2013-03-15T18:36:38.157 に答える