.net的ValidateRequest 属性

2022-09-02 15:23:27 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

ValidateRequest 属性

转载 2009年10月17日 12:44:00

  • 标签:
  • html /
  • asp.net /
  • 正则表达式 /
  • 设计模式 /
  • 公告 /
  • c#
  • 1220

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

自我总结语:

通常用于:当发布公告等信息时,加入了第三方编辑器的情况之下,提交数据时,一定要禁止该属性<%@ Page ValidateRequest=”false” %> 如果在1.0版本中webconfig不支持该代码,则应针对每个页面进行设置.

你只需要在那一页的HTML设计模式下把validateRequest=”false”添加到Page命令中即可,例如: <%@ Page language=”c#” Codebehind=”RoleDepart.aspx.cs” AutoEventWireup=”false” Inherits=”roleManage.RoleDepart” validateRequest=”false”%>

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/139521.html原文链接:https://javaforall.cn

0 人点赞