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

攻击原理:

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难度不大

时间: 2024-07-31 12:18:34

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

Cross Frame Script (跨框架脚本) 攻击

一.Cross Frame Script (跨框架脚本) 攻击 什么是Cross Frame Script? 很简单,做个实验就知道了.把下面的这段HTML代码另存为一个html文件,然后用ie浏览器打开. <html> <head> <title>IE Cross Frame Scripting Restriction Bypass Example</title> <script> var keylog=''; document.onkeypr

使用Tomcat实现基于iframe streaming的Comet聊天室

首先,无图无真相,先上图: 这是一个基于Comet实现的聊天室Demo,功能类似于QQ群聊.聊天过程中如果有新想消息,那么就需要服务器推送消息到浏览器,所以这里可以使用Comet技术. Comet一般有两种实现方式:长轮询(long-polling).流(streaming).而本文中的这个Demo的实现方式是基于流(streaming),前端使用了一个隐藏的iframe,这也是比较常用的一种方式.不过由于使用iframe流,导致浏览器上面的进度一直在转,这是因为iframe一直在加载的原因,先

基于iframe的移动端嵌套

需求描述 上上周接到了新的项目,移动端需要做一个底部有五个导航,点击不同的导航页面主体显示不同的页面,其中两个页面是自己做,而另外三个页面是引用另外三个网址,其中两个网址为内部项目,另外一个为外部(涉及跨域). 问题 考虑再三后最省时间成本的就是使用iframe,虽然在移动端使用,我的内心是很拒绝的,不过其他方案调研了下都不太符合现状.每点击一次加载一个新的iframe,比较懒,所以两个新页面也做成了iframe,在做的过程中出现了如下问题,这里总结一下: 1.嵌入的iframe页面无法滚动 2

基于iframe父子页面传值的方法。

之前项目中用layer.js作为弹窗的框架,发现layer.js中大部分弹窗都是通过iframe模拟的.为此,在项目中遇到了不少坑.印象最深的就是父子页面传值的问题.后面经过一段时间的研究.总结出以下几种方法: 一.在子页面的js中直接使用parent获取父级页面中的对象方法.如: $(document).ready(function(){ $("#people_add_cardActiveTime").text(laydate.now(0, 'YYYY-MM-DD 00:00:00'

XSS(Cross Site Script)

类型一:反射型XSS 简单地把用户输入的数据“反射”给浏览器.也就是说,黑客需要诱使用户“点击”一个恶意链接,才能攻击成功. 类型二:存储型XSS 把用户输入的数据“存储”在服务器端.这种XSS具有很强的稳定性. 类型三:DOM Based XSS 通过修改页面DOM节点形成的XSS,称之为DOM Based XSS. XSS Payload: XSS攻击成功后,攻击者能够对用户当前浏览的页面植入恶意脚本,通过恶意脚本,控制用户的浏览器.这些完成各种具体功能的恶意脚本,被称为”XSS Paylo

easyui-tabs 在ie8下基于iframe嵌套页面加载成功后切换空白问题

这是一个很坑的问题,由于项目必须支持ie8的情况下,产生了这个问题.在我进行逐步对比的分析过后,终于发现了原因所在: 核心问题在于easyui-layout直接被定义在了body 里面,具体实际原因暂时还不清楚 解决办法: 去除body的 easyui-layout ,重新定义一个div.

基于Android系统应用层与框架层剖析View点击事件

基于Android操作系统的框架层和应用层,介绍了View的绘制.触摸事件的传递流程,分析了View与用户交互时被回调的相关框架层代码和应用层代码,研究了Android应用中事件处理的相关重要机制.通过具体代码详细剖析了在Android系统下用户和View交互过程中折射出的回调机制,回调方法在系统框架的详细执行过程,以及基于回调机制的经典事件处理模型. 1 引言 Android是一种基于Linux的自由及开放源代码的操作系统,目前基于Android平台的应用日趋广泛.Android应用程序大多基

SharePoint Iframe 一个错误此内容不能显示在一帧&amp;lt;继续&amp;gt;

在之前的SharePoint网站iframe引用中,我们遇到过以下的问题,就是其他系统或者不通环境的SharePoint网站,引用SharePoint页面会报错"此内容不能显示在一个框架中",之前我们採取了解决方式的办法. 今天,无意中翻看msdn,发现了更加简便的方法,分享给大家. 原理介绍 在大部分情况下,假设网页在响应中发送 X-Frame-Options HTTP 头,则该网页将无法在框架中显示.默认情况下,SharePoint 网页包括 X-Frame-Options 头.假

SharePoint Iframe 报错“此内容不能显示在一个框架中”&lt;续&gt;

在之前的SharePoint站点iframe引用中,我们遇到过下面的问题,就是其它系统或者不通环境的SharePoint站点,引用SharePoint页面会报错"此内容不能显示在一个框架中",之前我们采取了解决方案的办法. 今天,无意中翻看msdn,发现了更加简便的方法,分享给大家. 原理介绍 在大部分情况下,如果网页在响应中发送 X-Frame-Options HTTP 头,则该网页将无法在框架中显示.默认情况下,SharePoint 网页包含 X-Frame-Options 头.如