记录分享邓杰律师从事网络技术工作点点滴滴。
编者按:一、在php.ini中查找到;open_basedir =确保其前面有分号未启用。二、然后查找到user_ini.filename = ".user.ini"user_ini.cache_ttl = 300并将其前面的分号去掉让其生效。三、你要单独配置的网站根目录 创建 .user.ini文件,写入如下内容:open_basedir=/tmp/:/proc/:/you_web_path四、重启服务器核实是否生效。
一、找到并打开php.ini配置文件,查找到
;open_basedir =
确保其前面有分号未启用。
二、查找到
user_ini.filename = ".user.ini"
user_ini.cache_ttl = 300
并将其前面的分号;去掉让其生效。
三、到你有需要的网站根目录下创建 .user.ini配置文件,写入如下示范代码:
open_basedir="d:/你的网站目录英文/;C:/Windows/Temp/"
多个目录用;做间隔(注意:非windows下用冒号:做间隔。),然后保存,并将其设置为只读。如果设置不对可能会报错误如后: No input file specified。
——————
https://www.php.net/manual/zh/configuration.file.per-user.php
.user.ini 文件 ¶
PHP 支持基于每个目录的 INI 文件配置。此类文件 仅被 CGI/FastCGI SAPI 处理。此功能使得 PECL 的 htscanner 扩展作废。如果你的 PHP 以模块化运行在 Apache 里,则用 .htaccess 文件有同样效果。
除了主 php.ini 之外,PHP 还会在每个目录下扫描 INI 文件,从被执行的 PHP 文件所在目录开始一直上升到 web 根目录($_SERVER['DOCUMENT_ROOT'] 所指定的)。如果被执行的 PHP 文件在 web 根目录之外,则只扫描该目录。
在 .user.ini 风格的 INI 文件中只有具有 PHP_INI_PERDIR 和 PHP_INI_USER 模式的 INI 设置可被识别。
两个新的 INI 指令, user_ini.filename 和 user_ini.cache_ttl 控制着用户 INI 文件的使用。
user_ini.filename 设定了 PHP 会在每个目录下搜寻的文件名;如果设定为空字符串则 PHP 不会搜寻。默认值是 .user.ini。
user_ini.cache_ttl 控制着重新读取用户 INI 文件的间隔时间。默认是 300 秒(5 分钟)。
——————
四、在你网站根目录下制作并可跨站访问的test.php文件,该文件中输入示范参考代码如下:
——————
<?php
$content = file_get_contents("d:/另外一个网站根目录/test.txt");
echo $content;
?>
——————
在另外一个站的根目录下制作test.txt,在该文件中键入“禁止跨站访问“内容并保存。
五、重启服务器,访问https://你的域名/test.php,如果能看到“禁止跨站访问“则初步证明没成功,如果看不到则初步证明已经生效,再对应查看php报错日志检查核实,如果出现failed to open stream: Operation not permitted提示,则表示禁止跨站访问已经生效。
六、同时做必要的安全防范。通过nginx禁止访问.ini后缀文件或.user.ini 文件。如果访问时出现提示:403 Forbidden,则禁止已生效。这样做一是可以防止黑客通过https://你的域名/.user.ini形式访问下载你网站的 .user.ini配置文件内容。二是这样做也是防范黑客上传、修改并利用该文件入侵网站或服务器。这一步非常重要,再三提醒务必要做。示范代码如下:
#禁止扫描访问特定名文件
location ~* /(.user.ini|pbootcms.db)$ { return 403; }
#禁止扫描访问下载某类扩展名文件
location ~* \.(ini|rar)$ { return 403; }
以上为邓杰律师在搭建维护web服务器环境过程中所做安全防范,如您有任何疑问可以添加邓杰律师微信进行技术交流。

专注执业领域事务
全力办理委托事项
扎实维护合法权益

邓杰律师电话:13715198118
请输入您的联系电话,座机请加区号
