问题描述:
http://www.qq.com/downloadFloder/12345.doc
IIS + asp.net 下,如果用户知道上面的文件路径,就可以直接下载doc类型的附件。
实现方法:
大概说说,默认情况下,IIS + asp.net是两层分别处理,
1)如果用户请求*.doc,*.txt的文件,IIS 直接返回结果给用户。
2)如果用户请求*.aspx,IIS将处理转交给asp.net。
而我们的form验证是在asp.net层的,如果控制*.doc安全话,就让IIS把*.doc文件的处理交给asp.net,就是在IIS属性配置映射。
配置:
1)IIS6站点->属性->主目录 ->应用程序设置 配置->添加映射
可执行文件:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll
扩展名:.doc
动作: 全部 或者 限制为GET,HEAD,POST,DEBUG
2)在web.config 中配置
<httpHandlers>
<add verb="*" path="*.doc" type="System.Web.StaticFileHandler" />
</httpHandlers>
3)在下载目录downloadFolder配置web.config 限制非验证用户
<?xml version="1.0"?>
<configuration>
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</configuration>
如果进一步对权限进行控制,则可以自己写个类代替System.Web.StaticFileHandler接管文件的处理。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步