Codeigniter应用程序中的可配置SMTP帐户

时间:2018-02-23 14:55:13

标签: php codeigniter security passwords

我想让用户编辑将在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");

但这是硬编码的,并且不允许用户配置或编辑管理员的选项。我正在考虑从数据库中调用它,但是电子邮件密码将在表中公开(而不是哈希),对吧?

还有另一种方法可以可配置安全吗?

1 个答案:

答案 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