我是否应该在将字符串分配给asp.net TextBox之前对其进行编码

时间:2013-07-06 10:37:58

标签: asp.net

1,因为允许用户输入像<script>等html标签,所以我在web.config中禁用了asp.net验证请求。

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

2,为了防止xss攻击,我添加了HttpUtility.HtmlEncode来编码字符串。

3,在我的网络应用程序中用户可以添加和编辑自己的文章。但我不确定我是否应该在ArticleEdit.aspx页面的TextBox的页面加载阶段进行编码。

e.g:

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>"

如何解决这个问题?

抱歉我的英语不好。谢谢你!

1 个答案:

答案 0 :(得分:1)

  

我是否像下面那样对titleText字符串进行编码?

不,如果要将其分配给TextBox的Value属性,则无需编码任何内容。 WebControl将在显示之前自动对其进行编码。