是应该在nginx中设置安全标头/策略还是表达?

时间:2016-07-04 22:53:54

标签: node.js security express nginx http-headers

在设置CSP和http安全标头(如HSTS)等安全策略时,最佳做法是什么?它们应该在我的express.js应用程序中配置吗?或者最好在nginx中配置它们?我找到了关于如何实现它们的文档,但我不确定它们应该在何处实现。

1 个答案:

答案 0 :(得分:1)

要么可以使用。你应该把它们放在最适合你的地方,这取决于你的设置。

我假设您在一个或多个NodeJs应用服务器前面有一个Nginx Web服务器?

如果是这样,那么是从Nginx返回的一些页面(例如静态页面)和一些来自Node的页面(例如动态的)?你有多个节点服务器吗?

这也取决于你在使用Node做什么。让Nginx返回HTML,CSS和Javascript,然后使用该Javascript对节点服务器进行AJAX调用以返回JSON数据,这是很常见的。由于HTML文档需要CSP而不是远程JSON,因此在这种情况下从Node返回CSP头是没有意义的。

像HSTS这样的一些标题是为整个域设置的,所以对我来说,在Nginx层设置它们是有意义的,因此它们会影响所有请求 - 由Nginx提供的静态页面和由一个或多个Node服务器提供的动态页面。这也意味着如果您也设置了另一个节点服务器,则不必记住设置它们。

但是,如果为每个服务和/或请求返回不同的数据,那么在Node中执行此操作可能是有意义的。例如,如果您的Node应用程序需要能够根据进入的请求设置不同的CORS标头,那么在Nginx中执行此操作并尝试根据请求URL和参数重复逻辑是没有意义的。

最终,您应该根据应用程序设置最有意义的地方进行操作,最有可能正确设置(因此,当它不应设置为错误的值时,它不会被设置并且因此在将来忘记设置它并不容易,以及管理它最有意义的地方(例如,有时它比服务器配置更容易更改应用程序代码,反之亦然)。 / p>