这是停止直接文件访问的安全方法吗?


Is this a safe method to stop direct file access?

<?php if(basename($_SERVER["SCRIPT_FILENAME"]) == basename(__FILE__)) { header ("HTTP/1.1 404 Not Found");   exit; } ?>

把它放到我所有的PHP文件中,这是一种安全的方法还是可以绕过?

您应该将核心文件放在网站根目录之外。

例如,如果您的公共文件位于: /var/www/site0/public_html ,则将所有核心文件放在 /var/www/site0/ 目录下。

另一种方法是使用常量。很可能你有一个引导脚本,其中包括你的所有文件(这就是你需要直接访问保护的原因(。

在引导脚本顶部定义一个常量:define('BOOTSTRAPPED', 1)

然后将此行放在脚本顶部要阻止直接访问的位置:if (!defined('BOOTSTRAPPED')) exit;