【问题标题】:Is there a way to hide all database info such as password, username, etc?有没有办法隐藏所有数据库信息,如密码、用户名等?
【发布时间】:2012-04-21 21:34:42
【问题描述】:

我正在创建几个 php 脚本。我必须始终为同一个数据库和表的每个脚本插入主机、用户名、密码等吗?有没有办法只用一行或其他方式进行参考?有没有办法隐藏这些信息?

$host="XXXXXXXXX";
$username="XXXXX";
$password="XXXXX";
$db_name="XXXXXX";
$tbl_name="XXXXX";
mysql_connect("$host", "$username", "$password") or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

【问题讨论】:

  • 技术上任何人都可以通过链接到我的脚本并找到我的信息?是吗?
  • 跟随链接并不意味着您可以看到来源。你能看到 Stackoverflow 的源代码吗?
  • 他们看不到你的 php 代码。
  • 获取这些详细信息的更有可能的方法是暴力破解您的 FTP 并下载它们。
  • 感谢反馈。

标签: php mysql passwords host


【解决方案1】:

虽然 PHP 文件被执行,因此源代码在网络上是不可见的,但意外的错误配置可能会改变这一点。您可以将 DB 配置放在一个单独的文件中在 wbeserver 的文档根目录之外,然后使用 PHP 的 require 命令将其包含在其他脚本中。

但是,根据 PHP 配置,PHP 脚本可能无法访问 docroot 之外的文件,但有一些方法可以解决这个问题。 This SO question详细讨论这些问题

【讨论】:

    【解决方案2】:

    如果您不想将凭据放在 php 文件中,则可以将它们放在 php.ini 配置文件中。

    mysql.default_host = "localhost"
    mysql.default_user = "user"
    mysql.default_password = "pass"
    

    然后在php源码中:

    <?php
    
    $connect_db = mysql_connect();
    $err = mysql_error();
    if ($err != "")
    {
            echo "Error connecting to database: $err";
            die;
    }
    
    if (!mysql_select_db("mydomain_com_test", $connect_db))
    {
            echo mysql_error()."<br/>";
            die;
    }
    
    $sql = "SELECT NOW()";
    $rows = mysql_query( $sql );
    
    ?>
    

    【讨论】:

      猜你喜欢
      • 2019-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-22
      • 1970-01-01
      • 2019-12-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多