现在的位置: 首页 > 综合 > 正文

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

2018年01月23日 ⁄ 综合 ⁄ 共 871字 ⁄ 字号 评论关闭

错误信息:
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 这样的安全威胁,并规划以一个关键点为中心的防御策略:所有的用户输入都是危险的。

 

抱歉!评论已关闭.