经过昨天的测试,发现使用离线缓存的网站会被攻击。但是,不使用离线缓存的网站就真的不会受到这样的攻击么?

据我理解,按照标准当浏览器请求manifest文件时,若没有请求到,或者文件发生改变,应当不使用缓存,进行缓存更新的,然而实验的结果并不总是这样。

(很郁闷相同的操作为啥有时候结果不一样,不过大部分还是造成了离线缓存攻击的效果。)

首先,拿百度主页做实验,用修改HOST文件的方式将百度主页离线缓存为其他内容(这里就可以加入恶意代码),再改回正常,表示回到正常的网络环境,主要要关闭浏览器,不然刷新百度其实还是发请求到被劫持的IP,可能是浏览器缓存了DNS吧。再次请求时抓包如下图,发现请求appcache文件后,尽管百度返回了302的错误页,但是浏览器没有跳转,仍然保持了离线缓存的页面,实现了缓存中毒的效果。但是,百度也有https的版本,若访问https攻击实验就不会成功。

既然百度可以,那么支付宝的页面呢?由于支付宝是HTTPS,而小白我还不会搭建HTTPS……所以只用HTTP做了离线缓存攻击,当出现下面这页面时我惊呆了…安全软件在逗我么…

当回到正常环境时,用http访问支付宝页面会自动被302重定向到https的页面,浏览器不会使用缓存的页面。不知道使用https进行离线缓存攻击会不会成功。

除了百度和支付宝,还用网易的126.com做了实验。由于在请求appcache时会返回404 not found,浏览器更新了页面,没有使用缓存(貌似会使用缓存一段时间,没懂什么情况)。

个人认为,对于类似百度网站这样的服务器设置,会导致缓存攻击成功,感觉是浏览器实现时的一个bug。如果支付宝https能被离线缓存攻击,那么危害性还是很大的。

另外,当访问过https的一个域名时,浏览器firefox会默认访问https,而不能访问http,这可以在浏览器的站点设置那里删除记录。实验时特别注意dns缓存和浏览器本身缓存的影响。

HTML5离线缓存攻击测试(二)的更多相关文章

  1. HTML5离线缓存攻击测试

    本实验采用局域网模拟,通过修改本地HOSTS文件来模拟域名以及DNS欺骗.合法网站使用Linux CentOS7的apache服务器搭建,IP为192.168.1.113,HOSTS文件中加入192. ...

  2. HTML5 离线缓存管理库

    一.HTML5离线缓存技术 支持离线缓存是HTML5中的一个重点,离线缓存就是让用户即使在断网的情况下依然可以正常的运行应用.传统的本地存储数据的方式有 localstorage,sessionsto ...

  3. HTML5离线缓存(Application Cache)

    HTML5离线缓存又名Application Cache,是从浏览器的缓存中分出来的一块缓存区,要想在这个缓存中保存数据,可以使用一个描述文件(manifest file),列出要下载和缓存的资源. ...

  4. HTML5离线缓存问题

    HTML5离线缓存问题 1.应用程序缓存 什么是应用程序缓存(Application Cache)? HTML5 引入了应用程序缓存,这意味着 web 应用可进行缓存,并可在没有因特网连接时进行访问. ...

  5. HTML5 离线缓存Appcache

    创建一个和html同名的manifest文件,比如页面为index.html,那么可以建一个index.manifest的文件,然后给index.html的html标签添加如下属性即可: <ht ...

  6. html5离线缓存使用

    html5 离线缓存使用以及注意事项 1.index.html中加入离线缓存的声明文件 如:<!DOCTYPE html><html manifest="test.appc ...

  7. node.js与HTML5离线缓存

    最近正学到HTML5的离线缓存,却看到需要配置服务器.一下子就懵了,毕竟服务器的有关配置一般是很复杂的,而node.js的服务器是自己的代码生成的,这下要怎么配置?在网上搜索了很久,都没用关于node ...

  8. HTML5离线缓存

    参考文档:http://www.w3cschool.cc/html/html5-app-cache.html HTML5 应用程序缓存 又称离线缓存 ,即使断线了,刷新后也还是缓存了原来的页面,不会4 ...

  9. 使用 jQuery Mobile 与 HTML5 开发 Web App —— HTML5 离线缓存

    本文要介绍的,是 HTML5 离线网络应用程序的特性,离线网络应用程序在 W3C 中的实际名称是 "Offline Web applications" ,也称离线缓存.当用户打开浏 ...

随机推荐

  1. MySQL 备份错误日志

    MySQL 备份错误日志:   shell> mv host_name.err host_name.err-old shell> mysqladmin -u root -p flush-l ...

  2. [Django] The admin interface

    Now let's see how to access admin interface. 1. Create a super user which can access admin interface ...

  3. 【codeforces 752F】Santa Clauses and a Soccer Championship

    time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...

  4. plist文件无法打包进.a静态库中

    问题: 之前一直在做静态库的编写与维护,也一直知道静态库的图片资源是没办法打进.a中的.可是突然有个想法.由于有非常多參数的配置是在一个plist文件里的.尽管也知道这是一个plist文件,可是想想和 ...

  5. 开源 RISC-V 架构正在改变 IoT 处理器的游戏规则

    by Paddy McWilliams, Director of Product Marketing, CEVA   在过去的十年里,开源软件已经成为了科技世界最大的催化剂.现在开源的力量带来了自由发 ...

  6. Unity 2D游戏开发高速入门第1章创建一个简单的2D游戏

    Unity 2D游戏开发高速入门第1章创建一个简单的2D游戏 即使是如今,非常多初学游戏开发的同学.在谈到Unity的时候.依旧会觉得Unity仅仅能用于制作3D游戏的. 实际上.Unity在2013 ...

  7. iOS BCD编码

    inline static NSData* encodeBCD(NSString *value){ //NSString *value = @"123456"; NSMutable ...

  8. Qt单元测试工具 QTestlib(QVERIFY, QFETCH, QCOMPARE等)

    优点: QTestLib提供了单元测试框架的基本功能,并提供了针对GUI测试的扩展功能. 特性 详细描述 轻量级 QTestlib 只包含 6000行代码和 60个导出符号. 自包含 对于非GUI测 ...

  9. MySQL执行计划分析

    原文:MySQL执行计划分析 一. 执行计划能告诉我们什么? SQL如何使用索引 联接查询的执行顺序 查询扫描的数据函数 二. 执行计划中的内容 SQL执行计划的输出可能为多行,每一行代表对一个数据库 ...

  10. Android最新组件RecyclerView,替代ListView

    转载请注明出处:http://blog.csdn.net/allen315410/article/details/40379159 万众瞩目的android最新5.0版本号不久前已经正式公布了,对于我 ...