Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何防止访问我的PHP文件,包括header.PHP、footer.PHP等?_Php_Html_Security - Fatal编程技术网

如何防止访问我的PHP文件,包括header.PHP、footer.PHP等?

如何防止访问我的PHP文件,包括header.PHP、footer.PHP等?,php,html,security,Php,Html,Security,我正在为自己开发一个网站,我只是想知道如何防止直接访问header.php和footer.php等文件。这些文件只应包含在index.php或其他页面中,在这些页面中,将使用调用它们。我应该通过PHP来完成吗?编辑.htaccess文件或者有其他方法吗? 将文件放在web根目录之外的目录中 web服务器永远不会向用户提供这些文件 php等人。仍然可以通过include\require等访问文件 几十年来,这一直是金本位方法 将文件放在web根目录之外的目录中 web服务器永远不会向用户提供这些

我正在为自己开发一个网站,我只是想知道如何防止直接访问header.php和footer.php等文件。这些文件只应包含在index.php或其他页面中,在这些页面中,将使用
调用它们。我应该通过PHP来完成吗?编辑.htaccess文件或者有其他方法吗?

  • 将文件放在web根目录之外的目录中
  • web服务器永远不会向用户提供这些文件
  • php等人。仍然可以通过include\require等访问文件
  • 几十年来,这一直是金本位方法
      • 将文件放在web根目录之外的目录中
      • web服务器永远不会向用户提供这些文件
      • php等人。仍然可以通过include\require等访问文件
      • 几十年来,这一直是金本位方法

      我提供了3条建议,由于您没有提供太多的建议,我将为您提供一条详细的建议

      正如@Dragon所逃避的,当您使用
      include()
      时,您可以通过文件系统而不是HTTP请求进行读取。您可以检查HTTP动词($\u REQUEST、$\u GET、$\u POST)并拒绝显示内容或伪造401

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

      在这里,我将让您自己找出问题所在。

      我提供了3个建议,由于您没有提供太多的建议,我将为您提供一个详细说明

      正如@Dragon所逃避的,当您使用
      include()
      时,您可以通过文件系统而不是HTTP请求进行读取。您可以检查HTTP动词($\u REQUEST、$\u GET、$\u POST)并拒绝显示内容或伪造401

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

      我会让你自己在这里找到答案。

      如果你的服务器是linux,那就太完美了,因为你可以按照Dagon的建议将文件放在web根目录之外

      当然,web根目录是包含外部世界要访问的文件的基本文件夹。在许多系统上,这是公用的html文件夹

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

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

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

      只需确保管理员已将/home/user文件夹的所有者设置为您登录时使用的用户名,否则在尝试访问该文件时,您可能会收到拒绝访问的消息。在一个像样的cpanel设置中,最后一步应该已经为您完成了。

      如果您的服务器是linux,那就太完美了,因为您可以按照Dagon的建议将文件放在web根目录之外

      当然,web根目录是包含外部世界要访问的文件的基本文件夹。在许多系统上,这是公用的html文件夹

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

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

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


      只需确保管理员已将/home/user文件夹的所有者设置为您登录时使用的用户名,否则在尝试访问该文件时,您可能会收到拒绝访问的消息。在一个像样的cpanel设置中,最后一步应该已经为您完成。

      标准方法是将它们放在web根目录之外,或者检查会话变量或cookie。如果没有301重定向到另一页或
      die()
      。也可能伪造401状态。@Dagon那么,如果我将其放在资源文件夹中,我将如何保护它?@Twisty,你能详细说明它作为一个答案吗?用户无法访问web根之外的文件。标准方法是将其放在web根之外,或者检查会话变量或cookie。如果没有301重定向到另一页或
      die()
      。还可能伪造401状态。@Dagon那么,如果我将其放在资源文件夹中,我将如何保护它?@Twisty,您可以详细说明它作为一个答案吗?用户无法访问web根目录以外的文件您选择了这个作为答案?真的-唉。我可以将任何头请求发送到您服务器上的文件我想-这不是一种安全的方法谢谢,我现在明白了。您选择这个作为答案?真的-唉。我可以将任何头请求发送到您服务器上的文件我想-这不是一种安全的方法谢谢,我现在明白了。解决方案@Dragon posted适用于所有web服务器。它在Windows中的工作方式与此大致相同。@Dragon发布的解决方案适用于所有web服务器。它在Windows中的工作方式大致相同。我本想单击你的复选标记,有一段时间我以为我的眼睛模糊了。我本想单击你的复选标记,有一段时间我以为我的眼睛模糊了。