关闭

不能提交类似“<”等特殊符号的解决

1743人阅读 评论(0) 收藏 举报

错误信息:
A potentially dangerous Request.Form value was detected from the client

原因是系统认为那是危险的数据(例如可能有非法用户在注入),在每个文件头上加上:

<%@Page Language = "C#" validateRequest="false"%>

或者在虚拟目录的web.config文件里修改 validateRequest 属性为false就可以提交那些符号了,不过你就要严格检查提交的数据,以防止出现漏洞被人攻击。

下面是从网上找到的信息。
在 ASP.NET 1.1 中,@Page 指令上的 ValidateRequest 属性被打开后,将检查以确定用户没有在查询字符串、Cookie 或表单域中发送有潜在危险性的 HTML 标记。如果检测到这种情况,将引发异常并中止该请求。该属性默认情况下是打开的;您无需进行任何操作就可以得到保护。如果您想允许 HTML 标记通过,必须主动禁用该属性。
  <%@ Page ValidateRequest="false" %>
ValidateRequest不是 万能的药方,无法替代有效的验证层。

  没有任何关闭 ValidateRequest 的理由。您可以禁用它,但必须有非常好的理由;其中一条这样的理由可能是用户需要能够将某些 HTML 张贴到站点,以便得到更好的格式设置选项。这种情况下,您应当限制所允许的 HTML 标记(<pre><b><i><p><br><hr>)的数目,并编写一个正则表达式,以确保不会允许或接受任何其他内容。

以下是一些有助于防止 ASP.NET 遭受 XSS 攻击的其他提示:

使用 HttpUtility.HtmlEncode 将危险的符号转换为它们的 HTML 表示形式。

使用双引号而不是单引号,这是因为 HTML 编码仅转义双引号。

强制一个代码页以限制可以使用的字符数。

总之,使用但是不要完全信任 ValidateRequest 属性,不要太过懒惰。花些时间,从根本上理解 XSS 这样的安全威胁,并规划以一个关键点为中心的防御策略:所有的用户输入都是危险的。

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:373677次
    • 积分:4247
    • 等级:
    • 排名:第7165名
    • 原创:96篇
    • 转载:3篇
    • 译文:0篇
    • 评论:100条
    文章分类
    最新评论
    Asp.Net