网站安全设置
目录结构
app
cache
config
lib
modules
wwwroot
|--amdin
|--web
|--static
|--lib
|--index.php
只开放wwwroot目录给用户访问
目录权限设置
nginx和php-fpm以www用户和用户组运行,www用户是被禁止登录的
cache缓存目录
drwxr-xr-x 6 www www 4096 Jan 31 21:03 cache
其它目录的所有者是root,权限是755,如:
drwxr-xr-x 5 root root 4096 Aug 26 2015 app
php脚本所有者是root,权限是644
因为static是静态文件目录,上传的文件会在这个目录里面,所以这个目录所有者和所属组是www,既然是用户上传的,所以要禁止执行这个目录下所有php文件
在nginx配置文件中加入
location ~ ^/static/.*\.php$
{
deny all;
}
禁用一些危险的php函数
disable_functions=passthru,exec,assert,system,chroot,chgrp,chown,shell_exec,proc_open,ini_restore,dl,readlink,symlink,popen,stream_socket_server,pfsockopen,putenv
有个问题,CGI模式(php-fpm)不会用这些函数,但是cli模式很可能用这些函数,怎么办,那就用不同的php配置文件呗,比如,默认都是用的/usr/local/php/lib/php.ini,我们在/usr/local/php/lib下面增加php-cli.ini那么cli模式会自动使用php-cli.ini这个配置文件
禁止访问web目录下面的某个目录和目录下面的文件,如scan
location /static/scan {
deny all;
return 403;
}