Vuejs前端由Express和后端API在节点安全实践中提供服务

时间:2018-01-15 21:47:23

标签: node.js security express ssl heroku

我目前正在开展一个小型项目,我使用vue.js构建前端,并使用express.js作为后端。

对于前端,我有另一个express服务器只提供静态文件,所有请求将由前端服务器重定向到我的后端API和代理服务器。

对于后端,它只是一个Express API应用程序。

这两个应用程序现在都在heroku上运行。我的问题是:

  1. 连接前端和后端服务器的最佳做法是什么,我在网上进行了大量研究,有人说后端API不应该暴露在互联网上?我不知道怎么能跟我说话如果它不在互联网上,则后端。
  2. 对于前端,我可以使用SSL / TLS来保护连接。但是对于后端服务器通信的前端,我应该怎样做才能保护这种数据传输,我可以使用其他SSL / TLS吗?我应该使用某种机制来验证请求是从我的前端服务器发送的,而不是在其他地方发送的吗?如果是这样,那么推荐的方法是什么?
  3. 很多人说不应该直接连接数据库,它应该通过Web服务来保证安全。这意味着什么?现在在我的后端Express应用程序中,我有一行mongoose.connect('mongodb://someaddress/myapp');这是不好的做法?如果是这样,我该怎么做才能让它更安全?
  4. 请尝试更具体,我仍然是新的论文并尝试学习,代码示例可以真正帮助。非常感谢!!

1 个答案:

答案 0 :(得分:1)

  1. Vue和Express应用程序使用相同的语言编写,因此最好将这些应用程序作为单独的项目完成。这些是做不同事情的完全不同的项目,因此它们应该分开。

  2. 您已经部署到Heroku,因此SSL / TLS并不是您真正关心的问题。但是,如果您要部署到自己的VPS,则需要Let's Encrypt之类的内容。要限制从Express到Vue应用的请求,您需要查看CORS。有关详细信息,请参阅expressjs/cors

  3. Express app 连接到您的数据库的服务。如果您尝试从Vue应用程序直接连接到数据库,则会出现问题。您可以将客户端代码与服务器端代码耦合。你正在做的事情很好。