服务器禁止访问指定格式文件

我们的服务器有很多格式的文件,当我们由于安全考虑,经常不希望用户访问到某些格式的文件,或者用户上传了一些危险的文件,导致潜在的安全问题,有没有一个一劳永逸的方式让指定文件格式就是不能访问呢,比如不让用户访问.txt文件,或php文件,有的,今天看到了利用伪静态实现的,代码如下:

 

禁止访问特定后缀文件

location ~ \.(php|jsp|txt)$ {
    deny all;
}

禁止访问某个目录下的php后缀文件

location /directory {
    location ~ .*\.(php)?$ {
    deny all;
    }
}

禁止访问多个目录下的php后缀文件

location ~* ^/(directory1|directory2)/.*\.(php)${
    deny all;
}

禁止访问目录或目录下文件

#禁止访问目录 location ^~ /test/ {
    deny all;
}#禁止访问目录下文件 location ^~ /test {
    deny all;
}

nginx location的匹配语法

= 表示精确匹配

^~ 表示uri以某个字符串开头

~ 正则匹配(区分大小写)

~ 正则匹配(不区分大小写) !~和!~分别为区分大小写不匹配及不区分大小写不匹配的正则

/ 任何请求都会匹配

匹配优先级: = > ^~ > /

来源:https://segmentfault.com/a/1190000040649628

iis如果有限制某个文件格式访问,可以打开iis,选中你的项目,然后在右侧的功能视图界面找到 请求筛选,或者调整目录下的web.config进行设置,参考https://www.cnblogs.com/webenh/p/5775599.html

也可以直接bt里打开iis软件设置,然后设置MIME


web.config伪静态进行设置参考(可以再bt伪静态中直接设置,下面为禁止htm、php、txt的访问):

<?xml version="1.0" ?>

<rules>

<rule name="disableDownloadHtml_rewrite">

<match url=".*.htm$" ignoreCase="true"/>

<action type="CustomResponse" url="/" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden"/>

</rule>

<rule name="jingtxt_rewrite">

<match url=".*.txt$" ignoreCase="true"/>

<action type="CustomResponse" url="/" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden"/>

</rule>

<rule name="jingphp_rewrite">

<match url=".*.php$" ignoreCase="true"/>

<action type="CustomResponse" url="/" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden"/>

</rule>

</rules>