asp.net请求限制

来源:互联网 发布:单片机和微处理器功能 编辑:程序博客网 时间:2024/06/14 00:04

很多时候会碰到问题,比方说在浏览器直接输入路径的找到相应的HTML,这个HTML会泄露一些信息,或者是JSon文件会等其他文件,这时候需要进行过滤,阻止直接输入地址然后访问。

比如文件上传控件,在地址栏输入控件的路径会导致能够直接访问服务器的文件并且可以上传

解决方案,进行访问过滤

创建一个处理程序,将这个处理程序的命名空间和类名复制,然后在webconfig中配置如下节点

<httpHandlers>      <add verb="*" path="*/XXX.html*" type="命名空间.类名,命名空间" />    </httpHandlers>

path是地址,做一个通配即可

处理程序里面的代码进行访问验证,比方说如果用户处于登录状态才可以访问,则可以简单的进行session验证即可


最后需要在IIS里面进行配置,新增一个处理程序映射,路径可以同webconfig,可执行文件选择C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll,如果是.net2就选择V2里面的,起个名配置一下请求限制即可使用,此时访问指定通配路径的页面或文件则会先访问处理程序,由处理程序进行能否访问的处理


以上,即可完成访问的过滤。

同样,此方法可以实现防盗链处理。

缺点:访问指定路径则会先执行处理程序,某种意义讲,多了一个验证会降低能够访问情况下的效率,但是影响应该不大,有时间会进一步进行测试。


补充:

最近发现有些东西无法运行在经典模式下,所以就试图研究一下如何在集成模式下进行对应的访问限制和验证,找了半天资料倒腾了好几天,结果发现解决方案跟上面完全一样.....尴了个尬......


查了查,发现集成模式和经典模式的配置文件些许区别,在经典模式下需要在<system.web>节点下配置<httpModules>或者<httpHandlers>,而集成模式是在<system.webservice>里面配置<modules>和<handlers>节点即可

于是乎,把上面的代码直接移动到<system.webservice>节点里面就可以解决问题了

<system.webServer>    <handlers>      <add name="filterHandler" verb="*" path="*/ckfinder.html*" type="baoming.Web.services.filter,baoming"/>    </handlers>  </system.webServer>

找了那么久方案结果发现就只需要改个配置文件....

当在配置文件中加上这个节点之后,IIS的处理程序配置里面也会自动增加该节点的配置,无需进行更改,这时候就可以在集成模式下进行访问控制了~

0 0
原创粉丝点击