除了内容/脚本

时间:2016-05-24 08:05:11

标签: c# asp.net-mvc web-config

条件:.Net MVC 5项目模板。

创意:仅使用项目根web.config

阻止除内容/脚本之外的所有文件夹文件访问

我找到的解决方案,但不满意:

  1. 将添加此类结构的每个文件夹隐藏到web.config

    <location path="Upload">
        <system.web>
            <authorization>
                <deny users="*" />
            </authorization>
        </system.web>
    </location>`
    
  2. 不合适,可能/会有不同的文件夹名称,你应该总是根据这个模板,添加新文件夹为每个项目更改

    1. 使用此块:

      <security>
          <requestFiltering>
              <hiddenSegments applyToWebDAV="true">
                  <add segment="Upload"/>
              </hiddenSegments>
          </requestFiltering>
      </security>`
      
    2. 由于不适合,可能/会有不同的文件夹名称,您应该始终根据此模板更改它,添加新文件夹。它也不是逐个文件夹,它按网址拦截,所以如果你有路由,例如/ api / upload / movie / - 任何控制器 - 它将被阻止

      那么,是否有任何解决方案,阻止所有文件夹文件,除了一些我100%肯定保存?

1 个答案:

答案 0 :(得分:0)

否定IIS URL重写规则有效吗?您可以创建一个规则来检查路径是“content”还是“scripts”,然后将negate属性设置为true并将操作设置为“AbortRequest”。这将终止对服务器的任何请求,该请求与您指定的路径之外的任何路径匹配。

herethis answer查看“创建访问阻止规则”。

您可以尝试这样的事情:

<rule name="Deny all folder access" stopProcessing="true">
    <match url="^(content|scripts|whatever)\/.*$" negate="true" />
    <action type="AbortRequest" />
</rule>

请注意,此正则表达式将阻止内容或脚本中没有的任何。与根目录一样,根目录中的任何文件(如/favicon.ico),根目录下的所有页面(如/ contact-us)等等。从技术上讲,它是你问题的答案,但是你需要摆弄这个正则表达式才能使它更有用。