关于前端:关于前端页面测试和抵御-clickjacking-attack-的一些方法

29次阅读

共计 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…

上述代码的作用,让工具网站的查看从新显示绿灯:

正文完
 0