在inetpub中存储敏感的ini文件(对于PHPMailer凭据)但在IIS中的wwwroot之外 - 是“公共”吗?

时间:2016-06-07 06:23:59

标签: php iis phpmailer

我正在使用PHPMailer使用带有用户名和密码的SMTP在PHP中发送电子邮件密码授权。

效果很好,但我担心硬编码SMTP用户名& php文件中的密码。

Stack Overflow上的其他主题建议“将用户名和密码存储在Web服务器/文档根目录之外的'ini'文件中”

所以我把它存储在inetpub中,但是在wwwwroot之前。例如。 E:\的Inetpub \ smtp.ini

我的网站存储在E:\ inetpub \ wwwroot \ exampleWebsite

我的问题是:我的smtp.ini文件是否存储在“非公开”区域?换句话说,如果网站用户可以访问wwwroot,他们是否也可以访问inetpub中的文件?或者是否有一个更好的文件夹/子文件夹我应该存储它?

我的PHP代码如下:

$path = realpath('/inetpub/smtp.ini');
$config = parse_ini_file($path, true);
$mail = new PHPMailer(true);
$mail->isSMTP();
$mail->Host = 'outlook.office365.com';
$mail->SMTPAuth = true; 
$mail->Username = $config['smtp']['un'];
$mail->Password = $config['smtp']['pw'];
// ... rest of mail function ...
$mail->send();

1 个答案:

答案 0 :(得分:1)

您正在做的事情是安全的:该文件位于Web根目录之外,因此没有外部URL(假设您的服务器不允许诸如让相对URL离开Web根目录这样的愚蠢行为,例如../../smtp.ini )。您可以通过将其渲染为空来进一步保护它,例如在开始时添加这样的行,然后将其保存为.php文件:

;<?php return false;

这看起来像对ini文件解析器的无害评论,但如果作为PHP文件访问,将产生空白页。