htaccess 中的重定向是否为敏感页面提供了足够的安全性?

信息安全 Web应用程序 阿帕奇 xampp
2021-08-14 13:58:42

我用 MySQL 数据库登录详细信息制作了文件。使用.htaccess,我将每个用户从 重定向/Config/config.php/index.php我想知道这是否足够安全-这意味着足以阻止用户查看/Config/config.php吗?

4个回答

如果配置正确,这可以提供足够的安全性。

我能想到一个常见的缺陷:使用 Apache 和重写规则,通常可以构造一个指向同一个文件且不被重定向的 URL。例如,请求/Config/config.php重定向,但请求//Config//config.php不会。这是因为重写规则匹配一个准确的 URL,而不是任何变体。

使用重定向安全时的另一个常见错误是将标头发送到重定向,但不阻止页面呈现。然后,攻击者可以通过删除Location标题来访问页面。但是,这通常是应用程序中的错误,而不是在使用 Apache 进行重定向时。

更好的方法是将配置文件放在 Web 根目录之外。所以你有index.php一个子目录public,并且config.php在这个目录之外。这减少了您公开配置的可能性。

您的 config.php 设置方式不应允许人们查看凭据,即使他们确实可以通过 Web 浏览器访问此文件。

考虑以下配置文件,从这个示例中借用;

<?php
return (object) array(
    'host' => 'localhost',
    'username' => 'root',
    'pass' => 'password',
    'database' => 'db' );
?>

如果用户直接导航到这个页面,他们会看到一个空白屏幕。这是因为此脚本中的任何内容实际上都不会打印到页面上。不会泄露任何信息。

我建议以这种方式设置您的配置 - 这样,如果由于某种原因.htaccess失败,它实际上并不重要。

不。

考虑以下场景:

  1. 有人重新配置您的服务器并禁用重定向。哎呀。您的 .htaccess 不再保护您。
  2. 有人在服务器配置中添加了一个重定向规则,该规则在 .htaccess 文件中抢占了您的重定向规则。没有欢乐!
  3. 有人重新配置您的服务器并禁用 htaccess 文件。再次,不再有保护。
  4. 有人错误地删除了 .htaccess 文件。再次,不再有保护。

几年前,当我迁移到另一台服务器时,第 4 件事实际上发生在我身上——我忘了​​复制 .htaccess 文件。谢天谢地,几个小时后我注意到了,没有造成任何伤害。但是错误总是发生。你应该为他们做计划。

所有这些问题都适用于您使用 htaccess 文件实现的任何解决方案。如果您有权访问服务器的配置,我会将您的指令放在那里。我还将使用附加的 HTTP 基本身份验证层来保护您的配置端点(假设您使用 https 来访问它,这会增加相当大的安全性)。

如果 config.php 是自制的(而不是第三方软件包的一部分),我会在 php 脚本中重定向登录页面

正如其他人指出的那样,只有重定向不会对您有帮助,因为它只会在您通过浏览器访问它时重定向,但您知道它仍然可以通过将其包含在文件中来访问,例如在 php 中使用include&require您现在可能正在执行的操作. 如果某些用户能够在您的服务器上上传这样的文件,那么工作就不那么辛苦了。所以最好把它放在你的网站文件夹之外,也不要.htaccess使用Allowoverride all.

如果不能放在外面,您还可以删除对指定目录的直接访问public_html