网站安全设置


目录结构

  1. app
  2. cache
  3. config
  4. lib
  5. modules
  6. wwwroot
  7. |--amdin
  8. |--web
  9. |--static
  10. |--lib
  11. |--index.php

只开放wwwroot目录给用户访问

目录权限设置

nginx和php-fpm以www用户和用户组运行,www用户是被禁止登录的

cache缓存目录

  1. drwxr-xr-x 6 www www 4096 Jan 31 21:03 cache

其它目录的所有者是root,权限是755,如:

  1. drwxr-xr-x 5 root root 4096 Aug 26 2015 app

php脚本所有者是root,权限是644

因为static是静态文件目录,上传的文件会在这个目录里面,所以这个目录所有者和所属组是www,既然是用户上传的,所以要禁止执行这个目录下所有php文件

在nginx配置文件中加入

  1. location ~ ^/static/.*\.php$
  2. {
  3. deny all;
  4. }

禁用一些危险的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

  1. location /static/scan {
  2. deny all;
  3. return 403;
  4. }