点击劫持
zKing 2018-11-26 Web 安全
# 概念
- 用户亲手操作
- 用户并不知情
- 造成的结果
- 盗取用户资金(转账、消费)
- 获取用户敏感信息
# 原理
- 通过 iframe 将目标网页内嵌,然后使用透明度属性隐藏
- 用户看上去是点击当前网页的按钮,但实际点击的是目标网页的按钮
# 防御方案
# 使用 JavaScript 禁止网页能够被内嵌
- 判断 top 是否与 window 相等,被内嵌的话是不等的
- 有局限性,当 iframe 使用 sand-box 属性的时候就无效了
# X-FRAME-OPTIONS 禁止内嵌
- 这是一个 http 头
- 支持性很好,推荐使用!!!
# X-Frame-Options 响应头有三个可选的值
- DENY:页面不能被嵌入到任何iframe或frame中;
- SAMEORIGIN:页面只能被本站页面嵌入到iframe或者frame中;
- ALLOW-FROM:页面允许frame或frame加载。
router.all('/*', async function (ctx, next) {
ctx.set('x-frame-options','DENY');
await next();
});
# 其他辅助手段
如验证码之类的,但只能是辅助手段