【问题标题】:Is this a secure way of connecting to an SQL server?这是连接到 SQL 服务器的安全方式吗?
【发布时间】:2022-01-25 18:28:15
【问题描述】:

假设我的服务器上有一个与 MySQL 服务器交互的 .php 脚本。
其中一部分是:

function sqlQuery($queryString) {
    ...
    $mysqli = new mysqli("theHost:some-port", 
                         "DB_allowed_username", 
                         "password123", "dbName");
    ...
}

这个脚本完全是服务器端的,像DevToolsview-source://web.address 这样的脚本不会显示源代码。

但是,没有人能够看到此源代码非常重要,因为它包含我的数据库特权用户之一的用户名和密码。有没有其他方法可以让别人发现这些细节,如果有,我该如何更安全地隐藏它们?

注意:- 目前我有一个 SSL 证书,但不能保证我会无限期地拥有它。

【问题讨论】:

  • PHP 是一种服务器端语言。所有代码都在服务器上执行,不会发送到客户端。有人可以看到源代码的唯一方法是他们可以访问服务器并且可以通过这种方式读取源文件。我认为你会遇到更大的问题。
  • “我有一个 SLS 证书,但不能保证我会无限期地拥有它。” - 为什么不呢?如果您关心安全性(您应该这样做),那么您绝对应该始终使用 SSL。
  • 我看不出您有任何理由放弃 SSL(特别是现在您可以使用 Let's Encrypt 免费获得证书)。听起来你正在准备一个非问题案例,在这里。无论哪种方式,SSL 仅用于加密客户端和服务器之间的数据,而没有人可以看到您的 PHP 代码,除非他们可以访问服务器(因为它根本不会发送到客户端)。
  • 如果服务器配置错误,此类信息可能会飞溅到网络上。最好将此类信息存储在远离网络根的手中。
  • 在大多数情况下,最好不要从本地主机外部访问 SQL 服务器,因此即使凭据泄漏也不会造成重大损害。

标签: php mysql database security


【解决方案1】:

只有当您的 http 服务器配置错误时,浏览器才能看到 PHP 代码。例如,如果从 httpd.conf 文件中删除 PHP 处理程序指令,我已经在 Apache 上看到过这种情况。然后.php 文件中的代码按原样交付给浏览器。

保护您的密码免受这种(罕见)可能性的好方法是将密码存储在您的 PHP 代码读取的配置文件中,并将配置文件放在 Apache 文档根目录之外。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-07
  • 1970-01-01
  • 2022-01-22
  • 2011-08-29
  • 2011-01-11
  • 1970-01-01
  • 2013-05-29
相关资源
最近更新 更多