如今我们站长做网站会越来越多的选择服务器,而不是虚拟主机。但是在选择服务器之后,我们大部分网友会直接使用宝塔面板、LNMP等一键安装WEB系统去配置网站环境。有些软件确实是在不断的升级和维护且安全功能做的不错,但是有些可能还没有考虑到安全问题。
因为大部分软件提供商都更多的考虑到功能,对于细节的安全做的还是不够的,比如前一段时间由于THINKPHP框架的漏洞导致安装THINKPHP的程序被黑,同时也影响到同一台服务器中的其他网站也有被黑掉,所以对于安全问题还是需要单独的处理、
在这篇文章中,我们整理几个在处理NGINX环境中PHP安全的一些事项。
1、禁止不安全函数
disable_functions = passthru,exec,system,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,fsocket,popen
这里我们需要在php.ini中禁止这些函数,如果系统中已经禁止的我们就不要添加。
2、防止跨站安全
在站点根目录创建.user.ini
open_basedir=/data/wwwroot/:/tmp/:/proc/
授权:
chattr +i .user.ini
这里我们需要加以权限限制。
3、禁止一些目录执行PHP
#静态文件目录禁止PHP执行
location ~* ^/(uploads|templets|data)/.*.(php|php5)$ {
return 444;
}
这里我们可以设置一些静态文件目录,比如图片上传目录禁止PHP执行权限。
当然,如果我们有必要的话也可以在Nginx配置文件中添加其他一些安全问题,比如一些安全防护。
if ($http_user_agent ~* (wget|Scrapy|Curl|HttpClient)) {
return 403;
}if ($http_user_agent ~* “WinHttp|WebZIP|FetchURL|node-superagent|java/|FeedDemon|Jullo|JikeSpider|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|Java|Feedly|Apache-HttpAsyncClient|UniversalFeedParser|ApacheBench|Webbench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|MJ12bot|heritrix|EasouSpider|Ezooms|BOT/0.1|YandexBot|FlightDeckReports|Linguee Bot|^$”) {
return 403;
}