0

1、ユーザーが html タグなどを入力できるようにするため<script>、web.config で asp.net validate Request を無効にしました。

 <httpRuntime requestValidationMode="2.0"/>
 <pages validateRequest="false"/>

xss2、攻撃を防ぐために、HttpUtility.HtmlEncode文字列をエンコードするように追加しました。

3、私の Web アプリケーションでは、ユーザーは自分の記事を追加および編集できますが、ArticleEdit.aspx ページの TextBox のページ読み込みフェーズでエンコードする必要があるかどうかはわかりません。

例えば:

ArticleEdit.aspx:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <input type="text" id="articleTitle" runat="server" />
    </form>
</body>
</html>

ArticleEdit.aspx.cs:

 protected void Page_Load(object sender, EventArgs e)
        {
            string titleText = "<script>alert('1111');</script>"; //string "<script>alert('1111');</script>" is fetched from DB;
            articleTitle.Value = titleText;

        }

質問 1:

以下のように titleText 文字列をエンコードする必要がありましたか?

string titleText =HttpUtility.HtmlEncode("<script>alert('1111');</script>"); 
articleTitle.Value = titleText;

質問 2:

文字列をエンコードすると、ページの読み込みが完了すると、ユーザーには ではなくエンコードされた文字列が表示され &lt;script&gt;alert(&#39;1111&#39;);&lt;/script&gt; ます"<script>alert('1111');</script>"

これを解決する方法は?

英語が下手で申し訳ありません。よろしくお願いします!

4

1 に答える 1

1

以下のように titleText 文字列をエンコードする必要がありましたか?

Valueいいえ、 TextBoxのプロパティに割り当てる場合は、何もエンコードする必要はありません。WebControl は、表示する前に自動的にエンコードします。

于 2013-07-06T10:39:13.177 に答える