我使用ZAP(一种自动安全扫描工具)在我的Meteor应用程序上运行安全检查。 我已经能够解决很多安全问题,但我仍然会收到部分应用程序的警告。例如,出现以下错误:
Web浏览器XSS Protection未启用,或已被禁用 ' X-XSS-Protection'的配置HTTP响应头 网络服务器
这些警告与HTTP标头有关。
以下代码解决了所有常规页面上的标题安全问题:
WebApp.rawConnectHandlers.use(function(req, res, next) {
res.setHeader('X-XSS-Protection', '1; mode=block');
next();
});
但是在所有/ sockjs / info?cb = XXX调用(例如/ sockjs / info?cb = 4yiv7ncev4)中,不包括一些使用res.setHeader()添加的头文件。如果我理解正确,这是服务器和客户端之间的调用,如订阅或调用Meteor方法,并且使用的框架是SockJS。
有没有办法在这些websocket连接中包含额外的标头?
非常感谢你的帮助!
答案 0 :(得分:0)
试试这个:
const oldHttpServerListeners = WebApp.httpServer.listeners('request').slice(0);
WebApp.httpServer.removeAllListeners('request');
const newListener = function(request, response) {
const args = arguments;
response.setHeader('X-XSS-Protection', '1; mode=block');
_.each(oldHttpServerListeners, function(oldListener) {
oldListener.apply(WebApp.httpServer, args);
});
};
WebApp.httpServer.addListener('request', newListener);