基于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-08-25 02:38:11

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

基于iframe实现类似于ajax的页面无刷新_javascript技巧

本方法是基于iframe实现的,需求是form表单提交带有文件上传的input标签,因此不能使用ajax来提交 首先: 复制代码 代码如下: <form id="form0" action="${pageContext.request.contextPath}/news/baikeAdd.form" enctype="multipart/form-data" method="POST" target="hidd

基于iframe实现ajax跨域请求 获取网页中ajax数据_AJAX相关

大家都知道,在不同域的情况下是不能发送ajax请求的,浏览器会报如下错误: 同时,内嵌的iframe中无法进行跨域通信的,也就是说不同域的iframe是无法互相读取数据的(当然利用hash变化可以从父window传入数据到子iframe,不过并没有什么意义).iframe跨域通信时,浏览器会报如下错误: 其实这两个问题都是由于跨域造成的. 下面就介绍如何解决这个问题. 其实问题的关键就在于,浏览器在解析ajax请求地址时会和当前网页的地址进行比较,如果是跨域的,那就禁止掉并且报错.那么我们如果让

基于iframe实现ajax跨域请求 获取网页中ajax数据

大家都知道,在不同域的情况下是不能发送ajax请求的,浏览器会报如下错误: 同时,内嵌的iframe中无法进行跨域通信的,也就是说不同域的iframe是无法互相读取数据的(当然利用hash变化可以从父window传入数据到子iframe,不过并没有什么意义).iframe跨域通信时,浏览器会报如下错误: 其实这两个问题都是由于跨域造成的. 下面就介绍如何解决这个问题. 其实问题的关键就在于,浏览器在解析ajax请求地址时会和当前网页的地址进行比较,如果是跨域的,那就禁止掉并且报错.那么我们如果让

谈谈基于iframe、FormData、FileReader三种无刷新上传文件的方法_javascript技巧

发请求有两种方式,一种是用ajax,另一种是用form提交,默认的form提交如果不做处理的话,会使页面重定向.以一个简单的demo做说明:      html如下所示,请求的路径action为"upload",其它的不做任何处理: <form method="POST" action="upload" enctype="multipart/form-data"> 名字 <input type="t

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

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

SharePoint Iframe 报错:此内容不能显示在一个框架中

问题描述 我们SharePoint站点用Excel Service发布的Excel,需要Iframe到其他系统中,但是,Iframe的时候发现报错"此内容不能显示在一个框架中". 后来,尝试在其他系统中Iframe SharePoint其他页面,同样报这样的错误:但是SharePoint自己的页面,Iframe自己页面不报错,Iframe自己的Excel Services 页面报错,很奇怪的问题. 问题截图 问题介绍 经过很长一段时间的搜索,发现是一种安全策略造成的,为了防止"

SharePoint Iframe 报错“此内容不能显示在一个框架中”

问题描述 我们SharePoint站点用Excel Service发布的Excel,需要Iframe到其他系统中,但是,Iframe的时候发现报错"此内容不能显示在一个框架中". 后来,尝试在其他系统中Iframe SharePoint其他页面,同样报这样的错误:但是SharePoint自己的页面,Iframe自己页面不报错,Iframe自己的Excel Services 页面报错,很奇怪的问题. 问题截图 问题介绍 经过很长一段时间的搜索,发现是一种安全策略造成的,为了防止"

关于Web安全的三个攻防姿势

关于Web安全的问题,是一个老生常谈的问题,作为离用户最近的一层,我们大前端确实需要把手伸的更远一点. 我们最常见的Web安全攻击有以下几种 XSS 跨站脚本攻击 CSRF 跨站请求伪造 clickjacking 点击劫持/UI-覆盖攻击 下面我们来一一分析 XSS 跨站脚本攻击 跨站脚本攻击(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS.恶意攻击者往Web页面里插入恶意Scrip

密码管理器的攻防博弈

作为一个会每天访问Freebuf网站的人,或者说是一个对信息安全感兴趣的人,肯定会知道一位用户所有的网络账号不应该都使用相同的密码,这也是一个最基本的安全常识.可是那然后呢? Clipboard Image.png 前言 那么为了让每一个账号都能拥有一个健壮的密码,你可能就需要用到密码管理器了.也许当你第一次使用密码管理器的时候,你心里会有些忐忑不安,毕竟你将所有的密码都放在了这一个地方,而你又可以跨设备跨平台地通过云端来同步自己的密码,这种便捷性肯定会让每一个用户对密码管理器的安全产生质疑.