yii的一些安全设置

jerry Yii 2016年01月28日 收藏

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


1.  目录权限控制

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

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

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

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

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

  1.   RewriteRule assets/(.*).(php) [F]  
  2.   RewriteRule framework/(.*).(php) [F]
  3.   RewriteRule requirements/(.*).(php) [F]
  4.   RewriteRule public/(.*).(php) [F] 
  5.   RewriteRule themes/(.*).(php) [F]
  6.   RewriteRule uploads/(.*).(php) [F]

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

  1. deny from all

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

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

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