如何阻止访问我的PHP包含文件,如header.php,footer.php等?

时间:2015-04-17 02:34:55

标签: php html security

我正在为自己开发一个网站,我只是想知道如何阻止直接访问包含 header.php footer.php 等文件。这些文件只应包含在 index.php 等页面中,或者使用<?php include(''); ?>调用的其他页面。我应该通过PHP来做吗?如何编辑 .htaccess 文件还是有其他方法吗?

3 个答案:

答案 0 :(得分:4)

  • 将文件放在Web根目录的一个目录中。
  • Web服务器永远不会将这些文件提供给用户。
  • php et.al.仍然可以通过include \ require etc
  • 访问这些文件
  • 几十年来,这一直是黄金标准的方法。

答案 1 :(得分:0)

我提出了3条建议,既然你没有提供太多建议,我会给你一个详细说明。

正如@Dragon所说,当您通过文件系统而不是通过HTTP请求使用include()读取时。您可以检查HTTP动词($ _REQUEST,$ _GET,$ _POST)并拒绝显示内容或伪造401.

<?php
if(isset($_REQUEST) || isset($_GET) || isset($_POST)){
  header("HTTP/1.0 404 Not Found");
  die();
}

// Do the needed
?>

我会让你自己弄明白这个问题。

答案 2 :(得分:0)

如果您的服务器是Linux,那将是完美的,因为那样您可以遵循Dagon建议将文件放在Web根目录之外。

Web根当然是包含外部世界要访问的文件的基本文件夹。在许多系统上,这是public_html文件夹。

在安装了WHM / cpanel的系统上,您可能拥有一个特殊的用户帐户,该帐户的根目录(可以存储任何内容)位于整个系统的/ home / user。这可以通过使用cpanel附带的文件管理器实用程序来查看。在该/ home / user文件夹中,您可以找到以句点开头的配置文件和文件夹以及public_ftp和public_html文件夹。

在/ home / user文件夹中,您可以放置​​您不希望世界直接访问的PHP文件。然后在public_html中,(可在/ home / user中访问),可以将包含include语句的index.php文件放到“protected”文件中。在index.php中,您可以使用以下语句:

include "../file-to-include.php";

只需确保管理员已将/ home / user文件夹的所有者设置为您登录的用户名,或者在尝试访问该文件时可能会收到拒绝访问的邮件。在一个体面的cpanel设置上,最后一步已经完成了。