通过节点发送电子邮件的这种方式是否不安全?

时间:2018-09-06 18:56:19

标签: javascript node.js express backend express-session

我知道这个问题可能看起来很愚蠢,但是对于后端和安全性我还是很陌生。在我为客户建立的网站上,我制作了一个表格,向自己发送电子邮件。不过,为此,我最初是使用他的公司电子邮件和密码来执行此操作。我知道这很不专业,并且在我脑海中引发了安全问题。有人可以通过某种方式访问​​我的入口点.js吗? 如果是这样,最好使用电子邮件API,例如mailgun和sendGrid,对吗?

我正在做这样的事情:

//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");
});

1 个答案:

答案 0 :(得分:2)

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

不确定所运行的操作系统,但您可以考虑从命令行(作为普通系统用户,而不是root用户)执行以下操作:

$ export CLIENT_EMAIL='thedude@gmail.com' ; export CLIENT_PASS='secr3t_passw0rd'
$ echo $CLIENT_EMAIL
thedude@gmail.com

假设您使用与设置环境变量相同的用户来运行节点进程,则可以像这样1那样在js代码中访问它们:

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

我仍然有点担心使用这种方法的安全性,但是只要您的计算机没有受到任何损害,您就可以了。进程的环境变量仅对运行该进程的用户(euid)有效。2

希望这会有所帮助!