gpt4 book ai didi

php - MySQL/MariaDB 是否对 PHP (7.x) mysqli_connect 的数据库密码进行哈希处理?

转载 作者:行者123 更新时间:2023-11-29 17:43:36 29 4
gpt4 key购买 nike

请原谅初学者的问题。欢迎提出建议、链接和进一步阅读。

我担心网页的安全性并寻找最佳实践。当使用 PHP 连接到 MariaDB/MySQL 数据库时,大多数建议将数据库密码放在 PHP 页面(或包含的页面)上。这安全吗?有更好的“最佳实践”吗?

我已经用“哈希密码 MySQL MariaDB PHP7”等关键字搜索了文档、Stack Overflow 和互联网,但答案都是关于客户端登录网页,而不是 PHP 直接与 MariaDB 交互。 MySQL Docs说密码经过哈希处理以便存储,但这对我的 PHP 文件没有帮助。 PHP docs没有提供太多有用的信息,也没有现实世界的例子。

所以,我的问题:

  1. HTTP 用户下载我的源文件并查看这些密码的风险有多高? (我意识到 PHP 解析页面,因此典型用户不会看到原始代码或无法下载 PHP - 并且 ssh、PHP、MariaDB 等的安全性是一个单独的问题。)

    <
  2. 我知道我可以对密码进行哈希处理,但是如果密码就在同一页面上,这有什么用呢? (或者我错过了什么?)

  3. 将数据库变量放在文件中更好/更安全,还是使用include("super-sensitive-info.php") 并放置变量那里?我可以(应该)对该文件或该文件进行散列或加密吗?密码,并且仍然可以使用?我可以(应该)隐藏这个文件吗? .super-sensitive-info.php),然后使用服务器安全来限制访问?

  4. 而且,使用特殊字符给我带来了麻烦,例如$password = "pa$$w@rd"; 应类似于 $password = "pa\$\$w\@rd";,每个典型的代码输入- 引号练习?或者我是否错过了关于我不应该在 SQL 中使用特殊字符的备忘录?

为了创建一个简单的示例,假设我有两个文件,如下所示。有没有更好的办法?或者就是这个?

super-sensitive-info.php

$user = "username"
$password = "password"
// $password = "pa\$\$w\@rd"; // (e.g. if database pw is "pa$$w@rd"?
$database_name = "database_name"

// I can hash it, but this seems only useful for client logins and such,
// unless I can hash this entire file....
// $hashed_password = password_hash($password, PASSWORD_DEFAULT);

index.php

include("super-sensitive-info.php")

$db = mysqli_connect('localhost',$user,$password,$database_name)
or die('Error connecting to MySQL server: ' . mysqli_connect_error());

$query = "SELECT * FROM episodes";

最佳答案

有关一些最佳实践,请查看最常用的框架的代码。

简而言之,@chris85 提出了最重要的几点。通常它具有以下文件夹结构:

config/config.local.php
public/index.php

添加config/*.local.php到git忽略:

$ echo "config/*.local.php">>.gitignore

config.php中:

return [
'db' => [
'username' => '...',
...
]
];

index.php中:

$config = require '../config.php';
$db = DbConnect($config['db']);
echo json_encode($db->getAllEpisodes());

从公共(public)文件夹提供您的页面:

$ php -S localhost:8000 -t ./public/

关于php - MySQL/MariaDB 是否对 PHP (7.x) mysqli_connect 的数据库密码进行哈希处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49908684/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com