在 PHP 中,我们可以使用文件来存储敏感数据,但这些文件必须具有一定级别的保护。
让我们以存储我们的数据库连接凭据的文件为例。
为了保存这些重要信息,我创建了一个db.php.ini
包含以下内容的文件:
<?php return; ?>
; credenciales
host=localhost
usuario=elusuariodeladb
clave="laclave"
dbnombre=elnombredeladb
此文件应用多个安全级别:
- 它位于 root 或 之外的文件夹中
public_html
,因此无法通过浏览器访问 - 它在一个隐藏文件夹中
.credenciales
- 它在开头有这个,
<?php return; ?>
因此如果有任何机会通过 URL 访问它,它将不会显示任何内容。
在连接到数据库时读取该文件是这样完成的:
private function Connect()
{
/* Leer credenciales desde el archivo ini */
$this->credenciales = parse_ini_file(".credentials/db.php.ini");
$dsn = 'mysql:dbname=' . $this->credenciales["dbnombre"] .
';host=' . $this->credenciales["host"] . '';
$pwd = $this->credenciales["clave"];
$usr = $this->credenciales["usuario"];
// ... más código
}
问题
是否可以采取其他措施使该文件更安全?这些措施是什么?
在 Web 服务器上处理敏感文件(凭据、配置文件、数据库连接)时,建议它们始终位于公共目录之外,以便无法直接访问它们。
但是将文件放在非公共目录中就足够了吗?
显然不是,我们必须考虑一些建议,以通过其他方式限制对这些文件的访问。
这并不能保证我们 100% 的安全,因为服务器可能由于其他因素而受到损害。
朋友,非常感谢您。一个我不知道的伟大贡献,我真诚地感谢你。但是我意识到文件扩展名应该是 php 时是 ini,我告诉你,因为我测试了它并且它显示了数据,因为它没有解析 php 指令并且很明显。所以我恢复了扩展名,这是 db.ini.php 就是这样。通过说它对您有用,我推断它在系统级别(解析)有效,但在 url 中查看时无效。但是不要给他任何东西,因为看多少年了,你的贡献还是很有用的。
干杯