一:apache禁止脚本执行
1、 打开apache安装目录下的配置文件,例如测试主机中的配置文件名称为apache2.conf。
2、编辑该配置文件,将以下几行添加到配置文件中,Directory为禁止执行权限的目录,例如填写上传文件所在的目录,完成后重启apache服务器即可生效。【后缀名黑名单可以按需增加】
<Directory /var/www/html/a/>
Options Indexes FollowSymLinks
AllowOverride All
<Files ~ ".(?i:php|php2|php3|php4|php5|phpm|phpml|phtml|phtm|phps|pht|asp|aspx|asa|cer|cdx|ashx|exe|sh|bash|jsp|jspx|jspa|html|web.config|cfm|cgi|war|ashx|htaccess|py|pl)$">
Order allow,deny
Deny from all
</Files>
</Directory>
测试结果:当访问后缀名在配置文件黑名单里的文件时,无论大小写均可以进行拒绝。
二:nginx禁止脚本执行
禁止web根目录下的uploads目录中脚本文件执行,uploads是网站的二级目录,可以更换为需要禁止权限的目录,可以添加多个目录。
1、 编辑nginx安装目录下的配置文件nginx.conf
2、 在配置文件nginx.conf中添加以下内容,完成后重启nginx服务器即可生效。
location ~* /(uploads|images)/.*.(php|php2|php3|php4|php5|phpm|phpml|phtml|phtm|phps|pht|asp|aspx|asa|cer|cdx|ashx|exe|sh|bash|jsp|jspx|jspa|html|web.config|cfm|cgi|war|ashx|htaccess|py|pl)$
{
deny all;
}
测试结果:当访问后缀名在配置文件黑名单里的文件时,无论大小写均可以进行拒绝。
三:Windows下的IIS6.0取消网站目录脚本的执行权限
打开IIS中站点,在站点uploads目录、data目录以及静态html生成目录点击右键,菜单中选择“属性”,在目录属性面板选择执行权限为“无”即可。
四:IIS7取消服务器网站目录脚本的执行权限
1、在IIS的左侧选中该目录,切换到功能视图
2、打开“处理程序映射”功能
3、打开右侧的“编辑功能权限”,将“脚本”这一项取消掉即可。
限制IIS7的目录执行权限的本质,就是在编辑功能权限之后,会在所在目录建立一个web.config,通过里面的配置来限制该目录的权限,所以,当该目录已经有web.config的时候,建议先查看一下配置,然后在web.config下直接添加,添加代码下面的参考解决办法2。
设置时会遇到写入失败的情况,解决方法是:
1、有可能是当前目录没有写入权限,添加写入权限即可.
2、你的当前的分区不是ntfs,解决方法,在当前目录手动创建一个web.config文件即可。
下面附上web.config的内容:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers accessPolicy="Read" />
</system.webServer>
</configuration>
解释一下这里面要改的地方“<handlers accessPolicy="Read" />”,
如果想运行脚本, accessPolicy="Read, Script";
如果想执行脚本,accessPolicy="Read, Execute, Script" 。