ValidateRequest 属性
转载10月17日 12:44:00 标签:html//正则表达式/设计模式/公告/c#在 1.1 中,@Page 指令上的 ValidateRequest 属性被打开后,将检查以确定用户没有在查询字符串、Cookie 或表单域中发送有潜在危险性的 HTML 标记。如果检测到这种情况,将引发异常并中止该请求。该属性默认情况下是打开的;您无需进行任何操作就可以得到保护。如果您想允许 HTML 标记通过,必须主动禁用该属性。
<%@ Page ValidateRequest="false" %>
ValidateRequest不是 万能的药方,无法替代有效的验证层。
没有任何关闭 ValidateRequest 的理由。您可以禁用它,但必须有非常好的理由;其中一条这样的理由可能是用户需要能够将某些 HTML 张贴到站点,以便得到更好的格式设置选项。这种情况下,您应当限制所允许的 HTML 标记(<pre>、<b>、<i>、<p>、<br>、<hr>)的数目,并编写一个正则表达式,以确保不会允许或接受任何其他内容。
以下是一些有助于防止 遭受 XSS 攻击的其他提示:
? 使用 HttpUtility.HtmlEncode 将危险的符号转换为它们的 HTML 表示形式。
? 使用双引号而不是单引号,这是因为 HTML 编码仅转义双引号。
? 强制一个代码页以限制可以使用的字符数。
总之,使用但是不要完全信任 ValidateRequest 属性,不要太过懒惰。花些时间,从根本上理解 XSS 这样的安全威胁,并规划以一个关键点为中心的防御策略:所有的用户输入都是危险的。
自我总结语:
通常用于:当发布公告等信息时,加入了第三方编辑器的情况之下,提交数据时,一定要禁止该属性<%@ Page ValidateRequest="false" %>
如果在1.0版本中webconfig不支持该代码,则应针对每个页面进行设置.
你只需要在那一页的HTML设计模式下把validateRequest="false"添加到Page命令中即可,例如:
<%@ Page language="c#" Codebehind="RoleDepart.aspx.cs" AutoEventWireup="false" Inherits="roleManage.RoleDepart" validateRequest="false"%>