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:
如果对字符串进行编码。页面加载完成后,用户将看到一个编码字符串
<script>alert('1111');</script>
而不是"<script>alert('1111');</script>"
.
如何解决这个问题?
对不起我的英语不好。提前谢谢!