javascript - 这种通过 Node 发送电子邮件的方式不安全吗?

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

最佳答案

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

不确定您正在运行什么操作系统,但您可能会考虑从命令行执行类似的操作(作为普通系统用户,而不是 root):

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

假设您使用与设置环境变量相同的用户运行 Node 进程,您可以在 js 代码中访问它们,如下所示 1 :

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

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

希望这有帮助!

关于javascript - 这种通过 Node 发送电子邮件的方式不安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52210548/

相关文章:

node.js - NodeJS Express 中间件无需 next() 即可转到下一个

javascript - 如何在 express node.js 中发送对 ajax post 请求的响应?[已回答]

javascript - 根据 d3.js 中数据集的最小值和最大值设置轴范围

java - 网站不会在 android webview 中加载,但在 android 浏览器中工作正常

javascript - 如何使用文件系统(HTML5)访问/探索远程(服务器)文件?

node.js - 使用进程文件将 --node-args --inspect 传递给 pm2

javascript - phonegap `volumedownbutton` 事件未触发

node.js - 在nodejs中运行mocha测试用例时出现内存不足异常

node.js - 在 MongoDB/NodeJs/GridFS 堆栈中从 GridFS 下载文件时出现问题

javascript - ExpressJS 外部链接中断