如何防止访问我的PHP文件,包括header.PHP、footer.PHP等?
我正在为自己开发一个网站,我只是想知道如何防止直接访问header.php和footer.php等文件。这些文件只应包含在index.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服务器永远不会向用户提供这些
调用它们。我应该通过PHP来完成吗?编辑.htaccess文件或者有其他方法吗?- 将文件放在web根目录之外的目录中李>
- web服务器永远不会向用户提供这些文件李>
- php等人。仍然可以通过include\require等访问文件
- 几十年来,这一直是金本位方法
- 将文件放在web根目录之外的目录中李>
- web服务器永远不会向用户提供这些文件李>
- php等人。仍然可以通过include\require等访问文件
- 几十年来,这一直是金本位方法
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中的工作方式大致相同。我本想单击你的复选标记,有一段时间我以为我的眼睛模糊了。我本想单击你的复选标记,有一段时间我以为我的眼睛模糊了。