【问题标题】:Secure storage of database credentials数据库凭据的安全存储
【发布时间】:2012-06-05 05:23:00
【问题描述】:

最近有一个大问题,我的网络托管公司搞砸了,我所有的 php 文件都以纯文本显示。出于显而易见的原因,这对我来说是一个主要问题。主要是因为mysql数据库细节被暴露了。

我现在正在尝试更改我的 php 文件获取数据库登录信息的方式,这样即使托管公司让我失望,这种情况也不会再次发生。

我目前的设置如下:

     include 'info.php';

    class Login {

var $host;
var $username;
var $password;
var $db;
var $url;

info.php 里面是数据库的用户名、密码等。我想让它永远无法查看 info.php 文件,并且只有我的 .php 文件才能访问 info.php 以获取登录信息。

我该如何设置?这对我来说有点棘手,所以请不要苛刻,如果描述不好,请-1我..只要问,我会清除我描述中的任何空白。

【问题讨论】:

  • 您可能需要仔细查看代码的来源和年龄。 var $host 是在 php 4 中定义类变量的方式。

标签: php database security


【解决方案1】:

只需将 info.php 放在您的 webroot 之外。这样,您可以包含它,但如果您的网络托管 f*#$ 了,其他人无法查看该文件,即使是纯文本。

然后你可以像这样包含它:

include('../info.php');

这样,即使有人发现您有一个名为 info.php 的文件来存储您的所有密码,他们也无法将浏览器指向该文件。

以上将是理想且最防水的解决方案。但是,如果由于权限问题而无法做到这一点,则另一种选择是将所有敏感文件放在一个目录中,并使用 .htaccess 文件阻止对该目录的直接访问。

在您要阻止访问的目录中,放置一个包含以下内容的.htaccess 文件:

deny from all

【讨论】:

  • 这会在 public_html 文件夹之外吗?
  • 是的,完全正确。 public_html 文件夹之外的任何位置
  • 我有一个问题,我没有权限在 public_html 之外放置任何东西。猜测这已受到托管公司的限制......
  • 您可以使用 .htaccess 文件实现类似的功能。见编辑。
  • 它似乎有效,但要确认我的 .htaccess 文件包含拒绝所有人,仅此而已。这能满足我的需要吗?
【解决方案2】:

为示例“requests.php”创建重定向到文件的表单,并为您的所有请求打开它。如果您的数据正确重定向到特定页面,如果不正确,则执行相同操作。在切换结束时放另一个重定向。这样用户就看不到该页面。不要放 html 或其他东西 - 只有逻辑。

【讨论】:

  • 可能这并不能回答这个问题,但总的来说,我认为这个答案背后的想法是非常合理的。 “创建路由器”。如今,几乎所有现代 Web 应用程序都以某种方式包含 URL 路由。除了其他优势之外,它还有助于限制访问。
【解决方案3】:

如果由于某种原因 xbonez 的答案不起作用(假设一个人无权访问非 document_root 文件夹)..您可以使用 .htaccess 实现同样的目的

<files info.php>
 order allow,deny
 deny from all
</files>

这在理论上(未经测试)应该保护文件不被浏览器使用,但不阻止 php 包含所述文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-31
    • 1970-01-01
    • 2012-04-10
    • 2016-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多