【发布时间】:2021-05-14 21:11:24
【问题描述】:
我正在努力避免应用程序的点击劫持。因此,我将 x-frame-options 标头设置为拒绝,但它仍在打开 iframe 和任何点击劫持测试站点。
app.all('*', (req, res, next) => {
console.log('Before processing - ', req.url, req.method);
res.header('Access-Control-Allow-Credentials', true);
res.header('Cache-Control', 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0');
res.header('Access-Control-Allow-Origin', req.headers.origin);
res.header('Strict-Transport-Security', 'maxAge=100000');
res.header('X-Frame-Options', 'DENY');
res.header('Content-Security-Policy', "frame-ancestors 'none'");
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
res.header('Access-Control-Allow-Headers', 'Cookies, cookies, x-access-token, Origin, Content-Type, Accept');
return next();
});
【问题讨论】:
-
您的代码看起来不错。你是怎么测试的?
-
我在两个不同的网站上进行测试 http://web.clickjacker.io 和 https://www.lookout.net/test/clickjack.html
-
您是否检查了“网络”选项卡中的请求以查看响应中是否实际设置了
X-Frame-Options: DENY标头? -
是的,它在响应标头中,但 http://web.clickjacker.io 显示为 Missing Header
-
很奇怪。其他点击劫持测试网站是否报告相同的错误?
标签: node.js content-security-policy x-frame-options