更改连接详细信息时,数据库连接和功能是否会被破坏/删除?

时间:2018-07-03 07:00:04

标签: php database security

所以我想问一个关于与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 = "";

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

如果还有另一种方法来保护它,我很高兴知道

谢谢-萨米尔

2 个答案:

答案 0 :(得分:1)

第一个问题已由u_mulder的注释回答,因此我将回答关于保护数据库连接的第二个问题。

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

第二,如果将代码划分到不同的项目和存储库中,则可以控制哪个开发人员可以访问哪个项目/存储库。过去(但由于不同的原因),我这样做的方式是拥有一个负责连接数据库并检索/存储/更新任何数据的项目,而我所有其他模块/项目都在调用该项目以从中获取一些数据数据库。 就像在数据库和应用程序之间使用私有API。

另一种解决方案是限制特定数据库用户可以运行的查询类型,如果您担心他们访问数据库并将其用于运行不在数据库中运行的查询,那么请不要这样做。 t允许该用户运行代码库之外的任何查询(即,如果用户仅查看代码中的tableX,则授予该用户仅对tableX的查看特权)

答案 1 :(得分:1)

注意:涉及数据库和/或会话等时,采取附加预防措施的一种良好做法。 可以在后端实施适当的验证,以验证用户是否从有效的URL / IP地址进行访问等,或执行截断技术以允许重定向到登录页面和数据库连接(如果有效),否则会将其反弹到关闭状态现场。每当未通过时破坏或清除会话。