我正在使用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();
答案 0 :(得分:1)
您正在做的事情是安全的:该文件位于Web根目录之外,因此没有外部URL(假设您的服务器不允许诸如让相对URL离开Web根目录这样的愚蠢行为,例如../../smtp.ini
)。您可以通过将其渲染为空来进一步保护它,例如在开始时添加这样的行,然后将其保存为.php
文件:
;<?php return false;
这看起来像对ini文件解析器的无害评论,但如果作为PHP文件访问,将产生空白页。