【发布时间】:2019-09-13 14:50:07
【问题描述】:
我有一个 nginx 服务器,它将流量重定向到一个文件夹(例如,我们只需调用文件夹“htaccess”)到一个 404 页面,这样我就可以在一个 php 文件中存储一个明文密码。问题是,这感觉非常不安全,但需要访问我的 mysql 数据库。
在线指南上找到:
define('DB_SERVER', 'localhost');
define('DB_USERNAME', 'redacted');
define('DB_PASSWORD', 'redacted');
define('DB_NAME', 'redacted');
$link = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME);
if($link === false){
die("ERROR: Could not connect. " . mysqli_connect_error());
}
?>
同样,我需要使用 PHPMailer 存储 SMTP 服务器的密码,我的解决方案是使用变量 $password 和 $username 制作一个 .php 文件,并包含该文件(位于 htaccess 文件夹中)以便连接到服务器。但是,这也让人感到不安全,但我无法找到解决方法。我主要担心的是用户可以简单地注入 php 代码并执行 echo $password 并显示 php 文件引用的变量。谁能指出我正确的方向? .htaccess 是一种在您的服务器上隐藏数据的安全方式吗?
htaccess/user-config.php:
$pass='somepassword';
$user='someuser';
htaccess 之外的 php 文件:
// for examples sake, I'll call the folder 'htaccess'
include htaccess/user-config.php
$mail = new PHPMailer();
$mail->Username = $user;
$mail->Password = $pass;
【问题讨论】:
-
通常的建议是将持有凭证的此类文件存储在域根目录之上。 “我主要担心的是用户可以简单地注入 php 代码并执行 echo $password 并显示 php 文件引用的变量。” - 在这一点上几乎没有什么可以做的。如果人们可以在您的系统中执行他们自己的任意 PHP 代码,那么在大多数情况下已经为时已晚。
-
但是将它存储在 htaccess 文件夹中会是一个安全问题吗?我的意思是,用户不应该能够访问或了解文件夹和其中的文件。这是准确的,还是我没有考虑其他因素?问候
标签: php mysql .htaccess nginx phpmailer