Node.js 为多个前端域设置安全的后端NodeJS服务器

Node.js 为多个前端域设置安全的后端NodeJS服务器,node.js,security,web,nginx,vps,Node.js,Security,Web,Nginx,Vps,我最近做了很多研究,为我运行的所有网站创建一个后端,几天前我租了一个运行Debian的VPS 从长远来看,我希望将其用作某些web应用程序的后端。但是,这些客户端javascript应用程序运行在与VPS域完全不同的域上。我正在考虑将VPS上的各种后端应用程序作为守护进程运行。例如,守护进程1是一个python应用程序,守护进程2和3是节点js,等等。我不知道我最终会创建多少个 目前,我只有一个在VPS上运行的NodeJS应用程序。我想在其上实现两种方法,通过任意端口侦听,例如端口4000: /

我最近做了很多研究,为我运行的所有网站创建一个后端,几天前我租了一个运行Debian的VPS

从长远来看,我希望将其用作某些web应用程序的后端。但是,这些客户端javascript应用程序运行在与VPS域完全不同的域上。我正在考虑将VPS上的各种后端应用程序作为守护进程运行。例如,守护进程1是一个python应用程序,守护进程2和3是节点js,等等。我不知道我最终会创建多少个

目前,我只有一个在VPS上运行的NodeJS应用程序。我想在其上实现两种方法,通过任意端口侦听,例如端口4000:

/GetSomeData获取请求-获取一些参数并返回一些JSON /AddSomeData POST请求-获取一些参数并添加到后端MySQL数据库 这些方法只能从一个名为DomainA的特定域中使用,该域与VPS域不同

现在有一个问题我觉得我会反对CORS的政策。听起来我需要包含一个访问控制允许来源的响应头:DomainA。问题是,在将来,我可能想添加另一个可接受的请求者域,例如DomainB。那我该怎么办?我是否需要验证传入的request.connection.remoteAddress,如果它与DomainA/DomainB匹配,则写入相应的访问控制允许源

大约5分钟前,在发布此问题之前,我在

希望使自己能够与多个源共享,但没有统一响应*的资源在实践中必须动态生成访问控制Allow Origin标头,以响应它们希望允许的每个请求。因此,此类资源的作者应发送Vary:Origin HTTP头或提供其他适当的控制指令,以防止缓存此类响应,如果跨源重复使用,则可能不准确

即使我这样做,我还是有点担心安全问题。通过设计,我的域名网站上的任何人都可以使用该web应用程序,您不必是注册用户。我担心攻击者欺骗他们的IP地址,使其与DomainA相同。对于GetSomeData请求来说似乎无关紧要,因为我的NodeJ随后会将数据发送回DaemonA,而不是攻击者。但是,如果攻击者运行脚本一千次发布AddSomeData,会发生什么?我不希望我的sql表被恶意请求填满

另一方面,我一直在阅读关于虚拟主机和虚拟主机的内容,以及如何根据传入的域使用它们建立不同的路由,但我不认为我需要这些东西;然而,也许我错了

再一次,我不想将VPS用作网站服务器,节点JS侦听器将返回一些JSON集合,因此我不使用端口80。事实上,VPS的主要用途是对可能涉及本地MySQL数据库的数据进行一些繁重的操作,然后返回任意数量的前端客户端浏览器应用程序都可以使用的JSON集合


我还阅读了一些关于使用NodeJS或NodeJS的建议。我要做的事情需要这些吗?

您使用的是哪家主机提供商?AWS有很多工具来保护您的服务到特定的子网等。它基本上都归结为防火墙规则和潜在的路由。您也可以完全打开后端服务,并在其前面放置一个身份验证层,例如oauth2。@d11wtq实际上我在Linode上。这基本上是我作为Linux系统管理员的第一次体验。即使我做了路由,我是否仍然需要对POST方法进行某种身份验证?我有没有办法通过源IP限制传入请求并保证它们不会欺骗所说的IP?