zoukankan      html  css  js  c++  java
  • nginx 防 webshell 跨目录

     对于在一台服务器上有多个虚拟主机的人来说,Apache有一个很好用的地方---配置php_admin_value,在里面配置一下 open_basedir就可以了。

     
    但是Nginx却没有这样的设置,一旦某用户在他的虚拟主机下上传了一个WEBSHELL之类的东西,其他用户数据就遭殃了,今天就来解决这样的问题,怎么样让用户无法旁注。
     
     
    第一步,需要在php.ini 设置open_basedir的值,比如网站目录全部在 /www/web/ 下面,
     
     
    例如 /www/web/xxx.com/ 下面是xxx.com网站 
     
     
    那么我可以设置php.ini中 open_basedir="/www/web/:/tmp/" (注意,/tmp 必须设置,否则影响上传文件,如果你设置了 upload_tmp_dir ,那么把/tmp设置成 upload_tmp_dir 的值)
     
     
    然后执行
    # chmod 755 -R /www/web/
    # chmod 711 /www/web/
     
     
    这时,网站依然能访问,可是你试试上传一个WEBSHELL,看看还能列 /www/web/的目录么?
     
     
    但是问题又来了,如果说/www/web/下目录命名非常有规律,很容易被猜解到,直接输入 /www/web/xxx.com 就可以列别人的目录。
     
     
    别急,还有办法,把 /www/web/xxx.com 重命名为复杂的名字,比如 /www/web/xxx.com_41237415sdfad,
     
     
    再把PHP.INI 里面的 display_errors 关闭,攻击者基本上就会放弃了。
  • 相关阅读:
    网络学习笔记
    zabbix4.2学习笔记系列
    ansible2.7学习笔记系列
    记一次磁盘UUID不能识别故障处理
    白话ansible-runner--1.环境搭建
    kubernetes的思考
    计算机网络原理精讲第六章--应用层
    计算机网络原理精讲第五章--传输层
    centos7下LVM挂载和扩容
    多线程下载命令--axel
  • 原文地址:https://www.cnblogs.com/jicki/p/5546842.html
Copyright © 2011-2022 走看看