PHP可以直接访问本地服务器路径以及在服务器上执行脚本文件。合理地限制PHP的访问范围,可以有效地制止恶意用户对服务器的攻击。
1、文件系统限制
在PHP中可以通过配置open_basedir来限制PHP访问文件系统的位置,将PHP执行权限限制在特定目录下。当PHP访问服务器的文件系统时,这个设置的位置将被检查。当访问的文件在目录之外时,PHP将拒绝访问。
开启open_basedir可以有效地对抗文件包含、目录遍历等攻击,防止攻击者访问非授权目录文件。
open_basedir=/home/web/php/
; 限定PHP的访问目录为/home/web/php/
为此选项设置一个值,需要注意的是,如果设置的值是一个指定的目录,则需要在目录最后加上一个“/”,否则会被认为是目录的前缀。
限制访问示例如下。
<?php
echofile_get_contents("/etc/passwd");
// 读取非授权路径
?>
运行结果如下所示。
Warning:file_get_contents():open_basedir restrictio