【问题标题】:Does database connection and functions get destroyed/removed when i change the connection details?当我更改连接详细信息时,数据库连接和功能是否会被破坏/删除?
【发布时间】:2018-07-03 07:00:04
【问题描述】:

所以我想问一个关于 msqli 和 php 的数据库连接的问题。 所以当我与

建立联系时
$db = parse_url(getenv("DATABASE_URL"));
$db_host = $db['host'];
$db_user = $db['user'];
$db_pass = $db['pass'];

$conn = new mysqli($db_host, $db_user, $db_pass);

if ($conn->connect_error) {
   die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";

一切正常。 但是,如果有人能够回显/显示变量,则它不安全,因为该人可以访问信息和数据库。如果我这样做会怎样:

$db_host = "";
$db_user = "";
$db_pass = "";

建立连接后。这比什么都不做更安全吗?

如果有其他方法来保护它,我很乐意知道

谢谢 - 萨米尔

【问题讨论】:

  • 运行此代码并查看。很简单,不是吗?
  • 好的。那固定了1个问题:)。但它对安全有用吗,还是什么都没有?
  • 这是什么意思 - 有人有能力?有人可以访问您的文件吗?如果有人拥有 - 无论您如何处理变量,有人都可以读取您的所有文件。
  • 感谢您的回答!

标签: php database security


【解决方案1】:

u_mulder 在 cmets 中已经回答了第一个问题,所以我将回答您关于保护数据库连接的第二个问题。

首先,您不信任处理此代码的开发人员本身就是一个问题。

其次,如果您将代码划分为不同的项目和存储库,那么您将能够控制哪个开发人员可以访问哪个项目/存储库。我过去的做法(但出于不同的原因)是拥有一个负责连接到数据库并检索/存储/更新任何数据的项目,而我的所有其他模块/项目都在调用它来获取一些数据数据库。 这就像在您的数据库和应用程序之间拥有一个私有 API。

另一个解决方案是限制特定数据库用户可以运行的查询类型,如果您担心他们访问数据库并使用它来运行不在数据库中运行的查询,那么就不要' t 允许该用户运行代码库之外的任何查询(即,如果用户仅在代码中查看 tableX,则授予该用户仅查看 tableX 的权限)

【讨论】:

    【解决方案2】:

    注意:当涉及数据库和/或会话等时,采取额外预防措施的好习惯。 可以在后端实施适当的验证以验证用户从有效的 URL/IP 地址访问 等或执行截断技术以允许重定向到登录页面和数据库连接(如果有效),否则将它们退回到地点。只要不通过就销毁或清除您的会话。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-10
      • 2014-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多