网站安全设置

 


 

目录结构

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;
}