我们的服务器有很多格式的文件,当我们由于安全考虑,经常不希望用户访问到某些格式的文件,或者用户上传了一些危险的文件,导致潜在的安全问题,有没有一个一劳永逸的方式让指定文件格式就是不能访问呢,比如不让用户访问.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>
版权声明:《 服务器禁止访问指定格式文件 》为王健原创文章,转载请注明出处!
最后编辑:2021-11-2 19:11:17