• 如何使网站不出现从客户端(:)中检测到有潜在危险的 Request.Path 值这样类似的提示



    原创sxf359 最后发布于2016-11-08 17:57:05 阅读数 27140 收藏
    展开
    从.net4.0开始,微软加入了对特殊字符的限制。默认的是7个特殊字符:requestPathInvalidCharacters = “<,>,*,%,&,:,”
    一旦有这7个特殊字符,则asp.net直接报有潜在危险的Request.Path,Request.Form,Request.QueryString等这样的错误
    这是为什么出现的原因,可以在web.config中去除掉要限制的特殊字符,或者关闭校验。网上能找到三种关闭校验的方法:
    方法1:
    在.aspx文件头中加入这句:
    <%@ Page validateRequest=”false” %>

    方法2:
    修改web.config文件:

    <system.web>
    <pages validateRequest="false" />
    </system.web>

    因为validateRequest默认值为true。只要设为false即可。

    方法3:
    web.config里面加上

    <httpRuntime requestValidationMode="2.0" />
    1
    如果你觉得这样处理对网站安全影响不大,那么这样处理就能解决此问题。但是如果你认为这样处理安全风险大,就可以用下我使用的方法。
    我刚开始的思路是在httpmodule中截获url,然后检测是否有需要屏蔽的字符,如果有则重定向到其他页面的。但是实验发现,没有走到httpmodule处理这步,错误就发生了。

    那再往前推,只能在IIS中截获,而不能在aspnet_isapi中截获。这个时候想到了iis中的一个模块,url重写。服务器用的是windows2008系统。默认的IIS中没有这个模块。需要首先安装一个web平台安装程序,安装完后在IIS管理中会出现一个web平台安装程序图标:

    点击此图标,打开web平台安装程序,在产品/服务器中寻找url重写工具2.0.然后安装。安装完后,在IIS的模块中会出现url重写。

    应用url重写步骤比较多,我这里就不详细写了。只说结果,我使用的是正则表达式的模式匹配,无论采用重写还是重定向,都是虽然成功。但是错误日志中仍然有检测到有潜在危险的 Request.Path 值这样的提示。这表示,虽然重定向了。但是,后续程序并没有中断,仍然执行。这不是我想要的。

    幸运的是在IIS中还有一个请求筛选可以使用。打开IIS,找到要设置网站的请求筛选一项


    双击打开,在打开的请求筛选页,点击url选项卡,

    点击拒绝序列,添加url拒绝规则,这里添加了javascipt:,意思是在url中只要包含这个字符串,就会拒绝,添加后测试,发现错误日志中不会出现检测到有潜在危险的 Request.Path 值这样的提示,但是,页面却会出现404错误页的提示,仍然不行,我这里想要的不是404错误提示,而是重定向到网站首页。这里可以自定义404错误页来避免404错误提示。我的设置如下图:

    这里一定要选择302重定向,而不用选择在此网站执行url。因为选择这个,url地址栏显示的还是原来的url地址。到这里,这个问题算解决了
    ————————————————
    版权声明:本文为CSDN博主「sxf359」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/sxf359/java/article/details/53085044

  • 相关阅读:
    js中给一个元素添加事件
    asp.net客户端回调
    (转)web元素之input (javascript)功能
    在wcf中使用基于证书的授权和保护
    (转)IE与FireFox的js和css几处不同点
    IE&FF兼容性问题
    solaris UFS文件系统 要点
    perl命令行 代替 各种shell 一则
    nginx中的验证模块
    漂亮的正则,素数查找
  • 原文地址:https://www.cnblogs.com/ljt-stone/p/12605385.html
Copyright © 2020-2023  润新知