条件:.Net MVC 5项目模板。
创意:仅使用项目根web.config
阻止除内容/脚本之外的所有文件夹文件访问我找到的解决方案,但不满意:
将添加此类结构的每个文件夹隐藏到web.config
中<location path="Upload">
<system.web>
<authorization>
<deny users="*" />
</authorization>
</system.web>
</location>`
不合适,可能/会有不同的文件夹名称,你应该总是根据这个模板,添加新文件夹为每个项目更改
使用此块:
<security>
<requestFiltering>
<hiddenSegments applyToWebDAV="true">
<add segment="Upload"/>
</hiddenSegments>
</requestFiltering>
</security>`
由于不适合,可能/会有不同的文件夹名称,您应该始终根据此模板更改它,添加新文件夹。它也不是逐个文件夹,它按网址拦截,所以如果你有路由,例如/ api / upload / movie / - 任何控制器 - 它将被阻止
那么,是否有任何解决方案,阻止所有文件夹文件,除了一些我100%肯定保存?
答案 0 :(得分:0)
否定IIS URL重写规则有效吗?您可以创建一个规则来检查路径是“content”还是“scripts”,然后将negate属性设置为true并将操作设置为“AbortRequest”。这将终止对服务器的任何请求,该请求与您指定的路径之外的任何路径匹配。
从here和this answer查看“创建访问阻止规则”。
您可以尝试这样的事情:
<rule name="Deny all folder access" stopProcessing="true">
<match url="^(content|scripts|whatever)\/.*$" negate="true" />
<action type="AbortRequest" />
</rule>
请注意,此正则表达式将阻止内容或脚本中没有的任何。与根目录一样,根目录中的任何文件(如/favicon.ico),根目录下的所有页面(如/ contact-us)等等。从技术上讲,它是你问题的答案,但是你需要摆弄这个正则表达式才能使它更有用。