zoukankan      html  css  js  c++  java
  • web.config customErrors无法处理的is not a valid virtual path

        前天用skipfish把网站扫描了一下,发现了一堆

    is not a valid virtual path错误,检查了一下,都是通过访问类似这样的url造成的:

    test.com/test.aspx/%3bskipfish.invalid%3b%3f

        仔细检查了一下,发现是pathinfo中包含“?”的转义符“%3f”造成的,在调用System.Web.VirtualPath.Create(String virtualPath, VirtualPathOptions options)方法时抛出的异常。

        看了一下VirtualPath的实现,发现存在以下无效字符都会被拒绝:

    char[] s_illegalVirtualPathChars = new char[] { ':', '?', '*', '\0' };

        试验了一下,其他字符都会在iis级别就被拒绝,可能iis也会处理这些字符;只有%3f会出现经典的asp.net黄色背景页面。

        以上这些字符都无法通过web.config中定义的customErrors节点处理,即使能处理也只有%3f能够处理,所以只能在global.asaxApplication_Error方法中处理,当然也可以通过注册HttpHandlerHttpModule来处理。

        前面这个问题是在asp.net 2.0(无论是经典模式还是集成模式)中出现的,在asp.net 4.0中也存在这些问题,只不过asp.net 4.0多了个url routing,所以情况又有所不同。

        asp.net 4.0中的无效字符貌似多了一些,引用http://msdn.microsoft.com/zh-cn/library/system.web.configuration.httpruntimesection.requestpathinvalidcharacters.aspx

    <,>,*,%,&,:,\,?

        网站运行在asp.net 4.0经典模式下的时候,都会由iis直接抛出错误。

        运行在asp.net 4.0集成模式下的时候,customErrors设置可以生效了,如果要避免以上字符抛出异常,则可以在web.config中设置如下:

    <pages validateRequest="false"></pages>

    <httpRuntime requestPathInvalidCharacters=""></httpRuntime>

        当然为了安全考虑,尽量不要这样去做。

        嗯嗯,貌似4.0的配置选项又多了好多,有时间得看看去,就这样了。

  • 相关阅读:
    mybatis Column 'XXX' in where clause is ambiguous 错误
    IDEA 代码提示不区分大小写
    接口安全问题
    spring 事务问题
    js问题: is not a function
    Uncaught TypeError: form.attr is not a function 解决办法
    springmvc 跳转页面或者返回json
    ajax 跳转页面时添加header
    maven工程 添加本地jar依赖
    mysql 创建备份表
  • 原文地址:https://www.cnblogs.com/lwme/p/1885858.html
Copyright © 2011-2022 走看看