yii的一些安全设置

jerry Yii 2016年01月28日 收藏

说到安全, 据我用过的cms,基本上都有这样那样的问题,其中DEDECMS最为严重,漏洞多的吓人。 其实最重要的就是对目录权限的控制,只要目录控制好了,基本上就杜绝了大部分漏洞。另外,程序代码是否有漏洞要多方面检测,一般不好直观的发现。不过,编写某些功能的时候,就要特别注意了,比如:文件上传问题,代码上传问题, 表单提交问题,跨域脚本问题,DEBUG问题等。在这里,我简要说下自己的观点,不对的地方欢迎指正,谢谢!


1.  目录权限控制

    assets目录只是一些静态资源,但是往往会频繁使用,而且具有读写权限,所以要控制可执行权限,也就是不能让这个目录执行php文件。

    protected目录是主程序目录,除了data, runtime可读写外,其他一律不让读写操作。

    其他目录可以有读写权限,但是不能有执行权限

   a. 针对apache可以做如下配置(修改根目录的.htaccess文件, 当然直接在httpd.conf中配置也可以);    

# 设置不能执行php权限的目录

  RewriteRule assets/(.*).(php)$ – [F]  
  RewriteRule framework/(.*).(php)$ – [F]
  RewriteRule requirements/(.*).(php)$ – [F]
  RewriteRule public/(.*).(php)$ – [F] 
  RewriteRule themes/(.*).(php)$ – [F]
  RewriteRule uploads/(.*).(php)$ – [F]

其他不可执行权限的目录都放一个.htaccess文件内容都写上:

deny from all

  b. 针对nginx,比如目录或者文件需要是www用户,www用户组的权限才可以执行。那么其他目录都设置成root权限:

drwxr-xr-x  7 www  www  4096 11月 26 15:51 assets
-rw-r--r--  1 www  www  1150 8月   8 15:24 favicon.ico
drwxr-xr-x 19 root root 4096 7月  22 15:45 framework
-rw-r--r--  1 www  www   622 9月  19 17:21 index.php
drwxr-xr-x 13 root root 4096 7月  22 15:45 protected
drwxr-xr-x  7 www  www  4096 8月  13 09:45 public
-rw-r--r--  1 root root 1074 9月  10 21:37 README.md
-rw-r--r--  1 root root   33 8月  12 18:01 robots.txt
drwxr-xr-x  3 www  www  4096 7月  22 15:45 themes
drwxr-xr-x  8 www  www  4096 8月  20 13:52 uploads

2. 编辑器中文件上传的问题,这个就牵涉到session,未授权的session不让上传,并且上传的目录要是固定的,这就避免了在其他目录创建文件漏洞。