攻击原理:
CFS攻击(Cross Frame Script(跨框架脚本)攻击)是利用浏览器允许框架(frame)跨站包含其它页面的漏洞,在主框架的代码
中加入scirpt,监视、盗取用户输入。
Clickjacking(点击劫持) 则是是一种视觉欺骗手段,在web端就是iframe嵌套一个透明不可见的页面,让用户在不知情的情况下,
点击攻击者想要欺骗用户点击的位置。
CFS 和 Clickjacking其实都是基于网页iframe产生的攻击。当没有预防的时候,攻击者可以利用iframe的方式包含你的网页,
采用欺骗的方式,引导用户过来点击,利用监听盗取用户输入信息或者是利用样式控制或者骗取用户点击某个特定的区域,而达到
获取劫持的目的。

防止被 FRAME 加载你的网站页面

1. meta 标签:很多时候没有效果,无视

<meta http-equiv="Windows-Target" contect="_top">

2. js 判断顶层窗口跳转,可轻易破解,意义不大

function locationTop(){if (top.location != self.location) { top.location = self.location; return false; } return true; } locationTop();

破解:

// 顶层窗口中放入代码
var location = document.location;
// 或者 var location = "";

【像淘宝前端页面用的js:

if (top.location != self.location){         top.location = self.location;     }

3. header 控制,绝大部分浏览器支持

网站Sitemap的一些规则

使用 X-Frame-Options 有三个可选的值:

DENY:浏览器拒绝当前页面加载任何Frame页面

SAMEORIGIN:frame页面的地址只能为同源域名下的页面

ALLOW-FROM:允许frame加载的页面地址

PHP代码:

header('X-Frame-Options:Deny');

Nginx配置:

add_header X-Frame-Options SAMEORIGIN

Apache配置:

Header always append X-Frame-Options SAMEORIGIN

具体参见:https://developer.mozilla.org/en-US/docs/HTTP/X-Frame-Options?redirectlocale=en-US&redirectslug=The_X-FRAME-OPTIONS_response_header

注明: 如果是针对 安全扫描 appscan 或者CFCA认证 用的webinspect 这些工具的话扫出来的 Cross_Frame SCRIPT之类的high级别的安全问题,用第三条解决是可以过扫描的。如果不是过工具扫描,上述三中方案都是可行的。
在java中加入header deny方法如下(spring mvc,其他框架大同小异)
  @RequestMapping("/login")     public String login(HttpServletRequest request,HttpServletResponse response) {         HttpSession session = request.getSession();         session.invalidate();         response.addHeader("x-frame-options","DENY");         return "login";     }
之所以扫描工具不认前端js跳出frame也是有道理的,毕竟破前端js难度不大

基于iframe的CFS(Cross Frame Script)和Clickjacking(点击劫持)攻击相关推荐

  1. iframe优缺点、X-Frame-Options(如何防止点击劫持、设置页面是否能作为iframe嵌套)、iframe长轮询和应用场景

    目录 iframe优缺点 优点 缺点 为什么尽量少用iframe iframes阻塞页面加载,影响网页加载速度 唯一的连接池 解决 iframe应用场景 iframe长轮询 iframe跨域使用 防嵌 ...

  2. 基于 iframe 的全新微前端方案

    作者:damyxu,腾讯 PCG 前端开发工程师 iframe是一个天然的微前端方案,但受限于跨域的严格限制而无法很好的应用,本文介绍一种基于 iframe 的全新微前端方案,继承iframe的优点, ...

  3. WEB消息提醒实现之二 实现方式-基于Iframe的流方式

    #基于Iframe的流方式 ##原理 基于Iframe的流方式的原理主要是,在页面隐藏一个iframe,前台设定定时器修改iframe的src属性设为对一个长连接的请求,服务器返回对页面函数的调用,函 ...

  4. 【树莓派-网络监控(5)前端搭建】基于iframe标签,集成监控实时画面与遥控功能,完成网络监控的搭建与调试

    前期内容提要: [树莓派-网络监控(1)分析准备]基于树莓派搭建可视化可远程遥控网络监控--工程分析及前期准备 [树莓派-网络监控(2)画面传输]基于mjpg-stream实现监控画面的传输 [树莓派 ...

  5. Cross Frame Scripting

    有時白箱工具會掃出 Client Cross Frame Scripting Attack , 可以在 Header 中加入設定 X-FRAME-OPTIONS 但是這樣有些 白箱工具並不知道, 客戶 ...

  6. html引入echart地图点击,基于echarts实现3D地图的定时高亮和点击事件

    技术选型 文章所选技术栈:vue.echarts.echarts-gl 安装Vue和echarts 1.安装echarts和echarts-alnpm i echarts --save npm i e ...

  7. 页面跨域与iframe通信(Blocked a frame with origin)

    项目中有个需求是在前后端分离的情况下,前台页面将后台页面加载在预留的iframe中:但是遇到了iframe和主窗口双滚动条的情况,由此引申出来了问题: 只保留单个滚动条,那么就要让iframe的高度自 ...

  8. linux c++ toolchain 配置文件,一步一步建立基于ARM+Linux的cross toolchain

    声明:本文在参考网上资料的基础上,以梁元恩的<如何为嵌入式开发建立交叉编译环境>为蓝本修改而成.对于自己在建立过程中遇到的问题进行了详细的说明,本文随自己学习的深入会进行相应的更新. 1引 ...

  9. iframe 、frameset 、frame的区别

    iframe 一.iframe属性的用法 标签规定一个内联框架.内联框架可以在当前的HTML文档中插入框架,框架内可以链接另一个页面 它是 一个围堵标记,但围着的字句只有在浏览器不支援 iframe ...

  10. html框架iframe菜鸟,HTML DOM Frame/IFrame frameBorder 属性 | 菜鸟教程

    Frame/IFrame frameBorder 属性 Frame/IFrame 对象 定义和用法 frameBorder 属性可设置或者返回 frame/iframe 元素的 frameborder ...

最新文章

  1. L1正则化为什么又叫做稀疏因子?
  2. Distributed locks with Redis--官方
  3. 《2018面向对象程序设计(java)课程学习进度条》
  4. Linux服务器rsync自动备份
  5. 周末舞会(信息学奥赛一本通-T1332)
  6. Win10之广告弹窗终结器:Process Explorer
  7. 阿里播放器使用Aliplayer
  8. 论文解读《使用支持向量机和PSSM谱预测蛋白质中的RNA结合位点》
  9. 2022年最新餐饮外卖行业市场研报合集(共45份)
  10. java怎么重新开始游戏_添加开始,停止,重置按钮到简单的Java游戏
  11. Scala中的面向对象
  12. html里获得农历时间,获取阴历(农历)和当前日期的js代码_javascript技巧
  13. 人工智能-语音交互-NLP自然语言(三) 语法-敲黑板
  14. Linux修改配置文件(自动)
  15. Kafka知识点概述
  16. 计算机控制矢量网络分析仪,完全独立的HF(短波)软件定义收发器和矢量网络分析仪设计...
  17. Ensight——Fluent重叠网格解决方案【翻译】
  18. 如何使用阿里云国际对象存储服务自动备份
  19. numpy的sum函数的axis和keepdim参数详解
  20. 【技术】基于数据库的权限设计

热门文章

  1. 测试怎么保障软件的的质量,如何保障软件测试的质量
  2. razorPage三元运算符使用注意
  3. ef codefirst字段类型与sqlserver表字段类型对应概要
  4. php foeeach页面输出,PHP数组foreach遍历输出例子详解
  5. LINUX下载编译sqlite-jdbc的jar包
  6. 虚拟机中编译代码死机,加大内存解决
  7. 启用多CPU多线程,加快加速OpenJDK的编译办法
  8. g++: command not found
  9. LINUX下载编译libav
  10. Git第一次提交代码的操作