防止跳出web目录
只允许你的PHP脚本在web目录里操作,针对Apache,还可以修改httpd.conf文件限制PHP操作路径。
例如:php_admin_value open_basedir(将用户可操作的文件限制在某目录下) web目录。
在Linux系统中web根目录有个.user.ini文件,修改该文件与修改httpd.conf文件效果一样。
.user.ini文件文档介绍:
自 PHP 5.3.0 起,PHP 支持基于每个目录的 .htaccess 风格的 INI 文件。此类文件仅被 CGI/FastCGI SAPI 处理。此功能使得 PECL 的 htscanner 扩展作废。如果使用 Apache,则用 .htaccess 文件有同样效果。
除了主 php.ini 之外,PHP 还会在每个目录下扫描 INI 文件,从被执行的 PHP 文件所在目录开始一直上升到 web 根目录($_SERVER[‘DOCUMENT_ROOT‘] 所指定的)。如果被执行的 PHP 文件在 web 根目录之外,则只扫描该目录。
在 .user.ini 风格的 INI 文件中只有具有 PHP_INI_PERDIR
和 PHP_INI_USER
模式的 INI 设置可被识别。
防止PHP木马执行webshell
第一种:打开safe_mode。
第二种:在PHP.ini中设置d isable_functions = passthru,exec,shell_exec ,system。
防止PHP木马读写文件目录
在PHP.ini中设置
disable_functions=fopen ,mkdir ,chmod,unlink,dir,fread,fclose,fwrite,file_exists,closedir,is_dir,readdir,open_dir,fileperms(取得文件权限),delfile,copy。
到此为止在Linux环境下没什么问题了,但在win下,Apache默认运行system权限
解决方法:
给web目录设置权限。
使Apache以另一种身份运行。