English |
  • 美国VPS主机推荐
  • |
  • 代购服务
  • |
  • 10美元以下VPS
  • |
  • VPS新手指南/教程
  • |
  • 留言板
  • |
  • 关于
  • | 登录 |

    LNMP下防跨站、跨目录安全设置,仅支持PHP 5.3.3以上版本

    2012年10月5日 下午 | 作者:VPS侦探

    LNMP一键安装包下存在跨站和跨目录的问题,跨站和跨目录影响同服务器/VPS上的其他网站,最近看PHP 5.3,在5.3.3以上已经增加了HOST配置,可以起到防跨站、跨目录的问题。

    如果你是PHP 5.3.3以上的版本,可以修改/usr/local/php/etc/php.ini在末尾里加入:

    [HOST=www.vpser.net] open_basedir=/home/wwwroot/www.vpser.net/:/tmp/
    [PATH=/home/wwwroot/www.vpser.net] open_basedir=/home/wwwroot/www.vpser.net/:/tmp/

    按上面的这个例子修改,换成你自己的域名和目录,多个网站就按上面的例子改成多个,最后重启php-fpm:/etc/init.d/php-fpm restart

    如果让网站可以使用探针需要在/tmp/后加上:/proc/

    PHP 5.3.3以上版本的用户,(LNMP 1.0以上默认已支持,不需要要替换)可以执行:cd /root;rm -f /root/vhost.sh;wget http://soft.vpser.net/lnmp/ext/vhost.sh;chmod +x /root/vhost.sh,这样替换原来的vhost.sh文件,以后添加网站就会自动添加HOST防跨站、跨目录的配置。

    为解决升级PHP 5.3.*版本后部分需要PHP 5.2.*版本的程序无法运行的问题,我们会增加一个PHP 5.2的安装脚本,脚本将在未来几天发布。

    注意:open_basedir 不是万能的也不是绝对安全的,会阻止一部分防跨目录的行为,但是同时也存在很多绕过open_basedir的方法。

    如有问题或与更好的方法,欢迎在本文或到论坛lnmp区反馈。

    >>转载请注明出处:VPS侦探 本文链接地址:https://www.vpser.net/security/lnmp-cross-site-corss-dir-security.html
    VPS侦探推荐:
    遨游主机VultrLinode搬瓦工LOCVPSKVMLAHOSTKVMHostXen80VPS美国VPS主机,国内推荐腾讯云阿里云
    欢迎加入VPS侦探论坛交流:https://bbs.vpser.net

    发表评论

    *必填

    *必填 (不会被公开)

    评论(46条评论)

    1. DDR说道:

      学习了

    2. VPS侦探说道:

      @liyu, 可以用,5.2的话也可以但有写不同,参考该楼层:http://www.vpser.net/security/lnmp-cross-site-corss-dir-security.html#comment-29351

    3. liyu说道:

      @liyu, @VPS侦探

    4. liyu说道:

      站长, 请问5.3.28的php版本可以用吗.
      还有5.2版本的脚本不提供了吗
      php升级曾经失败过 不敢轻易升级.

    5. 聞其詳说道:

      收益良多,感谢!

    6. VPS侦探说道:

      @lanmeng, 这个应该是基本没影响的,phpmyadmin出错报什么信息?

    7. lanmeng说道:

      这样设置之后discuz论坛确实会变慢,执行时间由原来0.06变成了0.5左右,而且phpmyadmin会出错无法正常使用

    8. 叶子天堂说道:

      这个在1.0上面是不是自动设置的啊,我看我的上面也有

    9. 麦子说道:

      本地是用Sublime Text
      linux用的是lnmp1.0 自带的vi编辑器

    10. VPSer说道:

      @麦子, 配置上没问题,你用什么工具编辑的?

    11. 麦子说道:

      /usr/local/php/bin/php -v后的报错信息如下:
      PHP: syntax error, unexpected END_OF_LINE, expecting '=' in /usr/local/php/etc/ php.ini on line 1876
      PHP 5.4.21 (cli) (built: Nov 18 2013 13:26:13)
      Copyright (c) 1997-2013 The PHP Group
      Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
      with Zend Guard Loader v3.3, Copyright (c) 1998-2013, by Zend Technologies

      报错行上下位置:
      1873 [HOST=www.phpmywind.net]
      1874 open_basedir=/mnt/wine/wwwroot/cvika/:/tmp/
      1875 [PATH=/mnt/wine/wwwroot/cvika]
      1876 open_basedir=/mnt/wine/wwwroot/cvika/:/tmp/
      1877 [HOST=vps.phpmywind.net]
      1878 open_basedir=/home/wwwroot/default01/:/tmp/:/proc/
      1879 [PATH=/home/wwwroot/default01]
      1880 open_basedir=/home/wwwroot/default01/:/tmp/:/proc/

    12. VPSer说道:

      @麦子, /usr/local/php/bin/php -v 看一下,然后贴一下报错行数上下的配置

    13. 麦子说道:

      老大,我把lnmp1.0的php升级到了5.4.21,结果按照上面加入到php.ini保存 重启的时候提示
      Starting php-fpm PHP: syntax error, unexpected END_OF_LINE, expecting '=' in /usr/local/php/etc/php.ini on line 1880
      done
      而1880行内容就是 open_basedir=/home/wwwroot/www.vpser.net/:/tmp/ 这个
      怎么弄呢?

    14. VPSer说道:

      @ledzixun.com, 看16楼回复