如果asp.net配置了web.config的 customErrors如下:
<system.web> <customErrors mode="RemoteOnly" defaultRedirect="/ErrorPage/DefaultError.html"> <error statusCode="404" redirect="/ErrorPage/404.html" /> </customErrors> </system.web> |
那么aspx页面发生错误时,会自动转向404.aspx这个页面,并且附带上aspxerrorpath这个参数,参数值为发生错误的动态页面路径。
如果某些web系统使用了重写技术隐藏动态页面,aspxerrorpath无疑暴露了动态页的地址,系统安全性因此降低一定的系数。
那么如何去掉aspxerrorpath这个参数呢?可以通过设置customErrors配置节点的redirectMode为ResponseRewrite,将发生错误的时转向的动态页也进行重写,这样就不会修改浏览器地址栏的url地址,从而删除掉了aspxerrorpath参数。
RedirectMode 属性值有ResponseRedirect和ResponseRewrite
1)ResponseRedirect,则将用户重定向到该错误页面,并且原始 URL 更改为该错误页面的 URL,并附带aspxerrorpath参数,参数值为发生错误的动态页的路径。2)ResponseRewrite,则将用户定向到错误页面,并且不更改浏览器中的原始URL。
所以要删除asp.net编译出错时附带的aspxerrorpath参数,需要设置RedirectMode为ResponseRewrite
<system.web> <customErrors mode="RemoteOnly" defaultRedirect="/ErrorPage/DefaultError.html" redirectMode="ResponseRewrite"> <error statusCode="404" redirect="/ErrorPage/404.html" /> </customErrors> </system.web> |