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:
如果编码字符串。页面加载完成后,用户将看到编码的字符串
<script>alert('1111');</script>
而不是"<script>alert('1111');</script>"
。
如何解决这个问题?
抱歉我的英语不好。谢谢你!
答案 0 :(得分:1)
我是否像下面那样对titleText字符串进行编码?
不,如果要将其分配给TextBox的Value
属性,则无需编码任何内容。 WebControl将在显示之前自动对其进行编码。