共计 1150 个字符,预计需要花费 3 分钟才能阅读完成。
点击劫持 (clickjacking) 是一种坑骗用户的攻打,当他们理论点击另一件事时,他们认为他们正在点击另一件事。它的另一个名称,用户界面 (UI) 修改,更好地形容了正在产生的事件。用户认为他们应用的是网页的一般 UI,但实际上有一个暗藏的 UI 在管制;换句话说,UI 已被修复。当用户点击他们认为平安的货色时,暗藏的 UI 会执行不同的操作。
因为 HTML 框架 (iframe) 可能通过框架在其余网页中显示网页,因而攻打成为可能。如果网页容许本人在框架内显示,攻击者能够用暗藏的通明层笼罩原始网页,并应用本人的 JavaScript 和 UI 元素。而后,攻击者诱骗用户拜访歹意页面,该页面看起来就像用户晓得并信赖的站点。没有迹象表明原始站点上有暗藏的 UI。用户单击链接或按钮,冀望原始站点执行特定操作,而后攻击者的脚本运行。然而攻击者的脚本也能够执行预期的操作,让它看起来没有出错。
咱们能够应用上面这个工具网站来检测本人的网站是否存在被 clickjacking 攻打的破绽。
https://clickjacker.io/
只须要把本人的网站 url,填入输入框,即可检测:
我本地开发的网站,应用 localhost 运行,当然没方法被这个工具网站扫描,所以我把它们公布到阿里云上,通过后者的公网 ip 地址进行拜访。
首先应用 pm2 list
查看阿里云服务器上运行的服务器过程:
应用 pm2 stop all
停掉所有的过程:
在 meta
元素中设置 X-Frame-Options 是没有用的!例如,meta http-equiv="X-Frame-Options" content="deny"
没有成果。
https://developer.mozilla.org…
X-Frame-Options 仅通过设置 HTTP 标头起作用,如下例所示。
const frameguard = require('frameguard');
app.use(frameguard({ action: 'SAMEORIGIN'}));
下面的代码成果如下:
应用本文结尾提到的工具网站进行扫描:
下面的代码失效了,当初的输入是:
it is safe from clickjacking attack.
另一个指令:CSP: frame-ancestors
,同样不反对在 meta
元素里定义:
var express = require('express');
var app = express();
app.use(function(req, res, next) {res.setHeader("Content-Security-Policy", "script-src'self'");
return next();});
https://stackoverflow.com/que…
上述代码的作用,让工具网站的查看从新显示绿灯: