【问题标题】:using htaccess to hide database passwords使用 htaccess 隐藏数据库密码
【发布时间】:2011-02-08 03:48:54
【问题描述】:

我有一个连接到数据库的 php 类,该数据库中硬编码了数据库的密码。我无权访问 webroot 之外的文件夹。阅读这个论坛和其他人似乎创建一个 htaccess 文件与

命令允许,拒绝
全部拒绝

在我的 php 类目录中就可以了。然而,在做了一些快速测试之后,这似乎也阻止了需要访问数据库以生成站点的公共文件。要清楚这是我想要的结构:

index.php(调用访问数据库的 php 类的公共文件) php_classes/DatabaseConnect.php(包含数据库的密码。我想对所有未上传到 mysite 的内容隐藏它——或者更好的是只对我命名的特定文件) ...

谢谢, 布鲁克

【问题讨论】:

  • 谢谢大家! @tjmoore1993 - 听起来define() 想法会起作用,但我想,正如你和@macarthy 指出的那样,它没有必要,因为php 代码在发送到客户端之前就已执行。我只是担心将它放在公共目录中 - 过去我总是可以访问 webroot 之外的目录......我将假设它不是问题。如果有人知道情况并非如此,请告诉我!再次感谢

标签: php database .htaccess protection


【解决方案1】:

不要将您的 PHP 代码放在 webroot 中。框架通常会使用这种技术,它们只将bootstrap 文件放在 webroot 中……您也可以这样做,并将包含敏感信息的 PHP 文件放在 web 根目录上方,这样就无法浏览。

您的bootstrap 文件将是#require_once '../safe_dir_above_webroot'

【讨论】:

    【解决方案2】:

    如果您担心其他人看到您数据库的登录详细信息,请放心,如果将其插入 PHP 标记之间,则无法看到。

    .htaccess 对于某些服务器来说有点棘手。似乎有不少设置讨厌推翻,我可以理解。

    由于您建议您不能访问根目录之外的文件夹,您可能只想做这样的事情。

    define("include_allowed", true);
    

    在前导文件中调用它,例如 index.php。当包含一个文件时,它应该检查 include_allowed 是否已设置为 true。

    if (include_allowed != true) header('HTTP/1.1 404 Not Found'); 
    

    这将检查它是否已被 index.php 或已定义 include_allowed true 的文件包含。

    如果返回 true 失败,则会发送 404 错误说 not found 来欺骗用户! :)

    【讨论】:

      【解决方案3】:

      由于您的文件是 PHP ,它将由 PHP exe 处理,然后再呈现给客户端。所以密码不应该是可见的。话虽如此,要使用 htaccess 停止查看特定文件,您可以这样做

      <Files php_classes/DatabaseConnect.php>
          Deny From All
      </Files>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-12
        • 2012-07-08
        • 2013-04-04
        • 1970-01-01
        • 2022-11-09
        • 2011-09-28
        相关资源
        最近更新 更多