我用 MySQL 数据库登录详细信息制作了文件。使用.htaccess
,我将每个用户从 重定向/Config/config.php
到/index.php
。我想知道这是否足够安全-这意味着足以阻止用户查看/Config/config.php
吗?
htaccess 中的重定向是否为敏感页面提供了足够的安全性?
如果配置正确,这可以提供足够的安全性。
我能想到一个常见的缺陷:使用 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
失败,它实际上并不重要。
不。
考虑以下场景:
- 有人重新配置您的服务器并禁用重定向。哎呀。您的 .htaccess 不再保护您。
- 有人在服务器配置中添加了一个重定向规则,该规则在 .htaccess 文件中抢占了您的重定向规则。没有欢乐!
- 有人重新配置您的服务器并禁用 htaccess 文件。再次,不再有保护。
- 有人错误地删除了 .htaccess 文件。再次,不再有保护。
几年前,当我迁移到另一台服务器时,第 4 件事实际上发生在我身上——我忘了复制 .htaccess 文件。谢天谢地,几个小时后我注意到了,没有造成任何伤害。但是错误总是发生。你应该为他们做计划。
所有这些问题都适用于您使用 htaccess 文件实现的任何解决方案。如果您有权访问服务器的配置,我会将您的指令放在那里。我还将使用附加的 HTTP 基本身份验证层来保护您的配置端点(假设您使用 https 来访问它,这会增加相当大的安全性)。
如果 config.php 是自制的(而不是第三方软件包的一部分),我会在 php 脚本中重定向登录页面。
正如其他人指出的那样,只有重定向不会对您有帮助,因为它只会在您通过浏览器访问它时重定向,但您知道它仍然可以通过将其包含在文件中来访问,例如在 php 中使用include
&require
您现在可能正在执行的操作. 如果某些用户能够在您的服务器上上传这样的文件,那么工作就不那么辛苦了。所以最好把它放在你的网站文件夹之外,也不要.htaccess
使用Allowoverride all
.
如果不能放在外面,您还可以删除对指定目录的直接访问public_html
。