0

1、因为允许用户输入html标签之类<script>的,所以我在web.config中禁用了asp.net validate Request。

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

2、为了防止被xss攻击,我增加HttpUtility.HtmlEncode了对字符串的编码。

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

例如:

文章编辑.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>

文章Edit.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 回答