php - 如何使用数据库密码?
问题描述
我对php很陌生。目前我正在做一个项目,应该从数据库服务器获取数据,然后将其返回给客户端。我有这个小代码片段:
<?php
$host_name = 'host';
$database = 'db';
$user_name = 'user';
$password = 'passwd';
$link = new mysqli($host_name, $user_name, $password, $database);
if ($link->connect_error) {
die('<p>Connection failed</p>');
} else {
echo '<p>Connection success.</p>';
}
?>
丑陋的部分是,密码是写在源代码中的。当使用 gitlab 或类似的东西时,密码总是被上传 - 在每个软件版本中。这(当然)是一个巨大的安全风险。我怎样才能使它更安全?将密码存储在文件中并使用 php 读取文件以获取数据库密码 - 这是一个好的解决方案吗?
解决方案
为此,您可以使用Laravel 之类的框架,但这将是您开发过程中的重大变化。Laravel 所做的是生成一个.env
文件。此文件包含所有应用凭据(数据库、邮件等)。您也可以这样做:制作一个不在您的 git 中的文件(将其添加到您的 git 中.gitignore
)(例如 JSON 文件)。克隆存储库时,您只需创建此文件。
例如,一个名为的 JSON 文件credentials.json
:
{
"database": {
"login": "your-login",
"password": "your-secret-password"
}
}
您可以使用 PHP 轻松读取 JSON 文件。
显然,您必须管理您.htaccess
的文件以使该文件无法从外部读取。
注意:您可以在 git 存储库中添加一个空白文件以保留 JSON 文件结构,而无需在 a 中提供凭据credentials-example.json
:
{
"database": {
"login": "",
"password": ""
}
}
克隆后,您只需重命名文件并添加凭据。
推荐阅读
- python - How to get readable command outputs from terminal
- java - 为了相同的目的,我应该如何设计我的 restfull API 以通过不同格式(JSON、CSV)的 POST 接受数据?
- matlab - 在 Matlab 中产生 NaN 的梯度下降循环
- powershell - 如何编写代码以基于 FileName 移动 excel 文件?
- azure - Azure Devops:发布管道上的盖茨:选择正在运行的代理
- java - 以下程序中的“if (targetStr.indexOf(value) == -1)”条件是什么意思,所以我们得到正确的输出
- apache-flink - Apache Flink:远程集群上的 ClassNotFoundException
- authentication - Should I use PKCE for OpenID Connect with Native Desktop Application?
- ios - 从代码添加子 UIViewController 时显示警告
- java - 使用 GridLayout 时在 XML 设计视图中呈现问题错误消息