这种通过节点不安全发送电子邮件的方式吗? [关闭]

问题描述 投票:0回答:1

我知道这个问题可能看起来很愚蠢,但我对后端和安全性都很陌生。在我为客户建立的网站上,我做了一个表格,向他自己提交了一封电子邮件。虽然,为此,我最初使用他的企业电子邮件和密码来做到这一点。我知道这是非常不专业的,并且在我脑海中提出了安全问题。有人可以以某种方式访问​​我的入口点.js?如果是这样,最好使用mailgun和sendGrid之类的电子邮件API吗?

我正在做这样的事情:

//GMAIL
var smtpTransport = nodemailer.createTransport(smtpTransport({
  service: 'Gmail',
  auth: {
    user: '*****',
    pass: '*****'
  }
}));

app.post("/send", function(req, res) {
    var mailOptions = {
        from: req.body.from, 
        to: "######", 
        subject: 'Client', 
        text: "----Name of the buyer: " + req.body.name + "\n ----E-mail from buyer: " + req.body.from + "\n ----Message body: " + req.body.body
    };
        smtpTransport.sendMail(mailOptions, function(error, info) {
         if (error) {
             return console.log(error);
         }
         console.log('Sent: ' + info.response);
     });
     res.redirect("/contact");
});
javascript node.js express backend express-session
1个回答
2
投票

我在社区组织的博客上开发一个简单的联系表单时遇到了同样的情况。我发现它是环境变量的完美用例。

不确定你正在运行什么操作系统,但你可能会考虑从命令行做这样的事情(作为普通系统用户,而不是root用户):

$ export CLIENT_EMAIL='[email protected]' ; export CLIENT_PASS='secr3t_passw0rd'
$ echo $CLIENT_EMAIL
[email protected]

假设您正在使用与您设置环境变量的用户一起运行节点进程,您可以在您的js代码中访问它们,如so1

var smtpTransport = nodemailer.createTransport(smtpTransport({
  service: 'Gmail',
  auth: {
    user: process.env.CLIENT_EMAIL,
    pass: process.env.CLIENT_PASS
  }
}));

我仍然担心使用这种方法的安全性,但只要你的机器没有被某种方式妥协,你就是好的。进程的环境变量仅供运行process.2的用户(euid)使用

希望这可以帮助!

© www.soinside.com 2019 - 2024. All rights reserved.