在设置CSP等安全策略和HSTS等http安全头时,最佳实践是什么?是否应该在我的express.js应用程序中配置它们?还是在nginx中配置它们是最佳实践?我找到了关于如何实现它们的文档,但我不确定它们应该在哪里实现。
发布于 2016-07-05 14:29:37
两者都可以使用。你应该把它们放在最适合你的地方,这取决于你的设置。
我假设你在一个或多个NodeJs应用服务器前面有一个Nginx web服务器?
如果是,那么一些页面是从Nginx返回的(例如静态页面)还是从Node返回的页面(例如动态页面)?您是否有多个Node服务器?
它还取决于您对Node执行的操作。让Nginx返回HTML、CSS和Javascript,然后使用Javascript对节点服务器进行AJAX调用以返回JSON数据,这种情况非常常见。因为在HTML文档上需要CSP,而不是tele JSON,所以在这个场景中从Node返回CSP头是没有意义的。
像HSTS这样的一些头文件是为整个域设置的,所以对我来说,在Nginx层设置它们是有意义的,这样它们就会影响所有的请求-由Nginx服务的静态页面和由一个或多个Node服务器服务的动态页面。这也意味着,如果您还设置了另一个节点服务器,则不必记住设置它们。
但是,如果为每个服务和/或请求返回不同的数据,那么在Node中这样做可能是有意义的。例如,如果您的Node应用程序需要能够根据传入的请求设置不同的CORS头部,那么在Nginx中这样做并尝试基于请求URL和参数重复逻辑是没有意义的。
最终,你应该根据应用程序的设置决定在最有意义的地方进行设置,在最有可能被正确设置的地方(所以当它不应该被设置为错误的值时不设置它,并且将来也不会太容易忘记设置它),以及在管理它最有意义的地方(例如,有时更改应用程序代码比服务器配置更容易,反之亦然)。
https://stackoverflow.com/questions/38193122
复制相似问题