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

简介: 攻击原理:    CFS攻击(Cross Frame Script(跨框架脚本)攻击)是利用浏览器允许框架(frame)跨站包含其它页面的漏洞,在主框架的代码中加入scirpt,监视、盗取用户输入。
攻击原理:
    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难度不大

相关文章
|
27天前
|
监控 JavaScript 安全
DOM Based XSS的防范措施有哪些
【8月更文挑战第25天】DOM Based XSS的防范措施有哪些
34 3
|
3月前
|
安全
WEB安全~X-Frame-Options
`X-Frame-Options` HTTP响应头用于控制网页是否能在框架中被嵌套,防范点击劫持攻击,保护用户安全。常见取值有`DENY`(禁止嵌套)和`SAMEORIGIN`(同源嵌套)。通过设置此头部,网站能提升安全性,防止被恶意嵌入其他站点。注意合理配置并与其他安全头部结合使用。例如,配置为`ALLOW_FROM baidu.com`允许来自百度的嵌套,`SAMEORIGIN`则仅允许同域名嵌套,而`DENY`则拒绝所有。不配置则无保护。
117 2
|
4月前
|
安全 前端开发 JavaScript
防御点击劫持:X-Frame-Options头的重要性与实践
防御点击劫持:X-Frame-Options头的重要性与实践
391 0
|
11月前
|
前端开发 安全 JavaScript
关于前端页面测试和抵御 clickjacking attack 的一些方法
关于前端页面测试和抵御 clickjacking attack 的一些方法
|
10月前
|
Web App开发 移动开发 安全
如何阻止 iframe 里引用的网页自动跳转
如何阻止 iframe 里引用的网页自动跳转
132 0
|
XML JavaScript 前端开发
loadrunner 脚本录制-录制选项设置HTML-based URL-based Script
loadrunner 脚本录制-录制选项设置HTML-based URL-based Script
91 0
|
JavaScript 搜索推荐 应用服务中间件
怎么防止网站被别人使用iframe框架恶意调用
发生歹意网站的危害关于新站来说,是比较大的。那我们应该怎样防止别人歹意镜像我们的网站呢?首要得了解一下镜像网站的原理,镜像网站大约需求以下的几个条件:你的网站运用了独立IP.当然,独立ip对一个网站来说,是好的,可以和其他网站差异开来,成为镜像网站的条件之一,只是独立ip的一个小缺陷。
134 0
怎么防止网站被别人使用iframe框架恶意调用
|
存储 安全 数据安全/隐私保护
access-control漏洞系列-绕过阻止预览链接
背景 复现步骤 access-control漏洞系列-绕过阻止预览链接
299 0
|
Web App开发 Android开发 iOS开发
微信浏览器 window.location.href
微信浏览器 window.location.href
334 0
|
前端开发
前端面试题:1.页面加载完成(onload)之前触发的事件;2.History,Location,Window,Navigation的区别;3.e.target和e.currentTarget的区别
★Navagator:提供有关浏览器的信息 ★Window: Window对象处于对象层次的最顶层, 它提供了处理Navagator窗口的方法和属性 ★Location:提供了与当前打开的URL-工作的方 法和属性,是一个静态的对象 ★History:提供了与历史清单有关的信息 ★Document:包含与文档元素一起工作的对象,它将这些元素封装起来供编程人员使用
254 0