我想让用户编辑将在CodeIgniter网络应用上发送通知的电子邮件帐户。我通常使用类似的东西:
$config = Array(
'protocol' => 'smtp',
'smtp_host' => 'ssl://smtp.googlemail.com',
'smtp_port' => 465,
'smtp_user' => 'xxx',
'smtp_pass' => 'xxx', // hardcoded unhashed password
'mailtype' => 'html',
'charset' => 'utf8'
);
$this->load->library('email', $config);
$this->email->set_newline("\r\n");
但这是硬编码的,并且不允许用户配置或编辑管理员的选项。我正在考虑从数据库中调用它,但是电子邮件密码将在表中公开(而不是哈希),对吧?
还有另一种方法可以可配置和安全吗?
答案 0 :(得分:2)
由于您需要通过SMTP传递原始密码,因此散列密码不起作用。您需要使用双向加密。您可以使用codeigniter加密/解密类来提高安全性:http://codeigniter.com/user_guide/libraries/encryption.html
应该如此简单:
$plain_text = 'This is a plain-text message!';
$ciphertext = $this->encryption->encrypt($plain_text);
// Outputs: This is a plain-text message!
echo $this->encryption->decrypt($ciphertext);
此外,要求GMAIL密码相当不安全。我希望使用OAUTH方法让用户批准您的应用程序:https://github.com/google/gmail-oauth2-tools