阻止直接访问 php 文件,但允许包含它

  • 本文关键字:许包含 文件 php 访问 php
  • 更新时间 :
  • 英文 :


嗨,我试图为我想构建的网站制作零件,它会像: 页眉.php、页脚.php等... 我希望这些文件只有在我包含它时才起作用,没有人可以直接访问它们。 有什么办法可以做到这一点吗?

这里有两个选项可以尝试:

<?php
/**
* Returns true if current file is included
*/
function isIncluded() {
$f = get_included_files();
return $f[0] != __FILE__;
}
if(!isIncluded()) {
// Do some stuff, eg: print some HTML
} else {
// Show 403/error
}
?>
<?php
// You can also use (recommended)
if(__FILE__ !== $_SERVER["SCRIPT_FILENAME"]) {
// this file is being included
}
?>

您也可以选择将文件放入受.htaccessDeny from all保护的目录中,因为PHP可以绕过它,但用户不能。

在Web 根目录中根本不包含这些脚本是一种常见且最佳实践。 您可以将包含放在其他位置的目录中。

也就是说,您可能有如下目录:

/www
index.php
/includes
header.php
footer.php

在你的index.php,你总是可以做require_once('../header.php');

这比将 Web 服务器配置为禁止访问要好。 如果您按照其他人的建议使用.htaccess文件,则该配置可能会丢失、移动、被 webroot 之外的正确配置文件忽略等。 您不想意外泄露这些文件。

您可以创建一个 .htaccess 文件并将其放在独立目录中(例如。"共同"(,不能直接执行。 此 .htaccess 文件应包含以下指令:

order deny,allow
deny from all

最新更新