我在asp.net websform中有一个按编号搜索的页面。我想制作页面,以防止任何跨站点脚本。
任何人都可以为我提供最好的解决方案吗?
答案 0 :(得分:5)
MSDN文章"How To: Prevent Cross-Site Scripting in ASP.NET"详细介绍了它。部分内容如下。
步骤摘要
要防止跨站点脚本,请执行以下步骤:
步骤1.检查是否已启用ASP.NET请求验证
步骤2.查看生成HTML输出的ASP.NET代码
步骤3.确定HTML输出是否包含输入参数
步骤4.检查具有潜在危险的HTML标记和属性
步骤5.评估对策。
步骤1.检查是否启用了ASP.NET请求验证
默认情况下,在Machine.config中启用请求验证。验证服务器的Machine.config文件中当前是否启用了请求验证,并且您的应用程序未在其Web.config文件中覆盖此设置。检查validateRequest是否设置为true,如以下代码示例所示。
<system.web>
<pages buffer="true" validateRequest="true" />
</system.web>
您可以逐页禁用请求验证。除非必要,请检查您的页面是否禁用此功能。例如,如果页面包含可用于接受一系列HTML字符作为输入的自由格式富文本输入字段,则可能需要为该页面禁用此功能。有关如何安全处理此类页面的更多信息,请参阅步骤5.评估对策。
测试是否已启用ASP.NET请求验证
创建一个禁用请求验证的ASP.NET页面。去做这个, 设置ValidateRequest =“false”,如以下代码示例所示。
<%@ Page Language="C#" ValidateRequest="false" %>
<html>
<script runat="server">
void btnSubmit_Click(Object sender, EventArgs e)
{
// If ValidateRequest is false, then 'hello' is displayed
// If ValidateRequest is true, then ASP.NET returns an exception
Response.Write(txtString.Text);
}
</script>
<body>
<form id="form1" runat="server">
<asp:TextBox id="txtString" runat="server"
Text="<script>alert('hello');</script>" />
<asp:Button id="btnSubmit" runat="server"
OnClick="btnSubmit_Click"
Text="Submit" />
</form>
</body>
</html>
步骤2.查看生成HTML输出的ASP.NET代码
步骤3.确定HTML输出是否包含输入参数
分析您的设计和页面代码,以确定输出是否包含任何输入参数。这些参数可以来自各种来源。以下列表包含常见输入源:
Form fields, such as the following.
Response.Write(name.Text);
Response.Write(Request.Form["name"]);
Query Strings
Response.Write(Request.QueryString["name"]);
Query strings, such as the following:
Response.Write(Request.QueryString["username"]);
Databases and data access methods, such as the following:
SqlDataReader reader = cmd.ExecuteReader();
Response.Write(reader.GetString(1));
Be particularly careful with data read from a database if it is shared by other applications.
Cookie collection, such as the following:
Response.Write(
Request.Cookies["name"].Values["name"]);
Session and application variables, such as the following:
Response.Write(Session["name"]);
Response.Write(Application["name"]);
步骤4.查看潜在危险的HTML标记和属性 步骤5.评估对策
(©2015 Microsoft,Terms of use)