2013-10-17 73 views
1

我正在使用php郵件程序類通過腳本發送電子郵件。PHP郵件類 - 保護電子郵件證書

的結構如下:

$郵件=新PHPMailer的;

$mail->IsSMTP();          // Set mailer to use SMTP 
$mail->Host = 'myserver.com'; // Specify main and backup server 
$mail->SMTPAuth = true;        // Enable SMTP authentication 
$mail->Username = '[email protected]';       // SMTP username 
$mail->Password = 'user123';       // SMTP password 
$mail->SMTPSecure = 'pass123'; 

在我看來是一個比特是在普通視圖郵箱憑據的安全漏洞。所以我想我可能會把這些放在web根目錄之外的外部文件中。我的問題是,我將如何分配$郵件對象這些值。

當然我沒有怎麼用include和/或requires ...這將是簡單的....

$mail->IsSMTP();          // Set mailer to use SMTP 
$mail->Host = 'myserver.com'; // Specify main and backup server 
$mail->SMTPAuth = true;        // Enable SMTP authentication 

includes '../locationOutsideWebroot/emailCredntials.php'; 

$mail->SMTPSecure = 'pass123'; 

然後emailCredentails.php的情況下:

<?php 
$mail->Username = '[email protected]'; 
$mail->Password = 'user123'; 
?> 

會這足夠安全嗎?

謝謝,

Alan。

回答

2

我相信你的證書應該存儲在webroot之外的配置文件(INI或JSON)中。由於協議需要原始憑證,這是最安全的方法。另外,不要忘記爲配置文件設置正確的訪問權限。

小例子:

<?php 

$config = parse_ini_file('/var/app/config.ini', true); 

// PHPMailer 
$mail->Username = $config['email']['username']; 
$mail->Password = $config['email']['password']; 
+0

啊謝謝,這是一個巧妙的解決辦法。使用.ini文件而不是.php的意義何在? –

+0

將應用程序配置信息存儲在外部純文本文件中很常見。 MySQL,Apache,你的名字。大多數應用程序都有一個INI文件,甚至有自己的標記語言來存儲配置。儘管一些PHP項目也將它存儲在包含數組的.php文件中,但我發現所有參與者都可以更容易地使用流行且易於閱讀的格式。 –

+0

好吧,所以它只是一個偏好或風格,在功能和安全性方面它不會有什麼區別嗎?非常感謝... –