写点什么

国外网友另类方式曝主流浏览器 HTML5 bug:localStorage 可占满硬盘

  • 2013-02-28
  • 本文字数:1050 字

    阅读完需:约 3 分钟

HTML5 Web 存储标准是设计为让站点可以存储比 Cookie(4KB)大的多的数据(比如 5-10MB)来制定的。现在,localStorage 已经发展的非常不错,在所有现代浏览器中都得到了支持(Chrome, Firefox 3.5+, Safari 4+, IE 8+,等等)。

然而,纵使 Chrome 的版本号已经逼近 30,IE 也已然发布了他的第十代产品,这个标准却仍未完美。国外网友 Feross Aboukhadijeh 在他的个人博客上,发布了一个搞怪的 API—— HTML5 Hard Disk Filler™。通过这个 API,他想告诉大家,其实这项功能在主流浏览器中还有着非常明显的问题。

W3C 标准早就预料到,可能会有网站可能会滥 Web 存储特性。在标准里,W3C 建议浏览器为每个域设置一个存储空间上限。所以,实际情况是这个样子的:

  • Chrome 中的每个域可以使用 2.5 MB
  • Mozilla Firefox 和 Opera 中的每个域可以使用 5 MB
  • Internet Explorer 中的每个域可以使用 10 MB

但是,如果站长们比较聪明,使用了很多诸如 1.filldisk.com、2.filldisk.com、3.filldisk.com 这样的子域名会怎么样?每个子域名都会有 5MB 的存储空间吗?W3C 标准表示这是不可以的:

User agents 应该阻止站点通过附属网站的形式来存储数据,比如通过使用 a1.example.com、a2.example.com、a3.example.com 这样的子域名来绕过主域名的存储限制。

通常来讲,我们建议给予一个强制的 5MB 存储限制。

然而,Chrome、Safari,和 IE 目前还没有实现这些诸如对“附属站点”进行存储限制的功能。所以,那些聪明的网站,比如 FillDisk.com,实际上可以通过这个方式,在每个访问用户的电脑上获得几乎无限的存储空间。

一个概念证明的 demo

原文作者提供了一个漂亮的 demo: FillDisk.com 来作为证明此概念的 demo。并且他还将这个 demo 开源在了 GitHub 上。

这个 demo 的特性有:

  • 充满 Chrome、Safari(iOS 与桌面版本)和 IE 用户的硬盘;
  • 在装配有 SSD 的 Macbook Pro Retina 上,占领 1GB 只需要 16 秒;
  • Chrome25、Safari6、IE10 测试通过;
  • 在像 Chrome 这样的 32-bit 的浏览器下,硬盘充满之前浏览器就会先被搞崩溃;
  • Firefox 测试失败,因为 Firefox 完美实现了 localStorage 的标准;
  • 还提供了一个清除磁盘占用空间的按钮。

各位不妨一试。

如何修正这个 Bug?

作者在天才般的搞怪结束之后,变得正经起来,给出了 Google 和 Apple 的 bug report 链接:

但是他也表示,IE 怎么办呢?因为 IE 的 bug report 页面坏掉了。

原文中有很多有趣的浏览,感兴趣的读者可以移步至英文原文。当然,也欢迎大家对此 Bug 以及这位国外友人的曝 Bug 方式在此留言讨论。

2013-02-28 07:554102
用户头像

发布了 91 篇内容, 共 38.6 次阅读, 收获喜欢 3 次。

关注

评论

发布
暂无评论
发现更多内容

第1周作业

波波

「架构实战营」

Java开发者跳槽指,牛客网算法初级班,春招我借这份PDF的复习思路

Java 程序员 后端

云栖收官:想跟远道而来的朋友们说

阿里巴巴云原生

云原生 云栖大会 收官 致谢

Java教程视频百度网盘,小甲鱼数据结构百度云,腾讯Java面试题

Java 程序员 后端

Java开发者跳槽面试,尚硅谷java课程,netty框架面试题

Java 程序员 后端

Java开发自学技巧!极客学院百度云资源,2021最新Java笔试题目

Java 程序员 后端

Java开发自学教程!尚学堂java,我被面试官绝地反杀了

Java 程序员 后端

Java开发面试题!牛客网java开发高频面试题,让我成功在寒冬中站稳脚步

Java 程序员 后端

Java排序算法面试,黑马java项目一,springboot实战项目源码

Java 程序员 后端

Java开发经验的有效总结,以商品超卖为例讲解Redis分布式锁

Java 程序员 后端

Java教程百度云最新版,java写脚本教程视频,程序员必须要了解的知识点

Java 程序员 后端

Java数据结构面试题,java架构师指南下载百度,Java工程师面试题及答案

Java 程序员 后端

Java开发面试基础,java架构师全套百度网盘,Java基础面试重点

Java 程序员 后端

阿里云重磅发布业务中台产品 BizWorks,中台发展进入下一个阶段

阿里巴巴云原生

阿里云 云原生 业务中台 云栖大会 BizWorks

Java数据处理的常用技术,springboot源码解读与原理分析

Java 程序员 后端

Java技术基础知识总结,菜鸟教程mysql,Java重要知识点

Java 程序员 后端

Java开发经典实战!自学java教程百度云盘,阿里程序员的Java之路

Java 程序员 后端

Java开发者应该会哪些东西才不会被公司淘汰,美团Java面试

Java 程序员 后端

Java开发还不会这些,极客学院和黑马,进阶学习工作最全指南

Java 程序员 后端

Java开发面经分享,springboot项目案例百度云,实战篇

Java 程序员 后端

模块一作业

心怀架构

Java开发究竟该如何学习,年末阿里百度等大厂技术面试题汇总,程序员翻身之路

Java 程序员 后端

Java开发经验谈,linux视频教程百度网盘,逆袭面经分享

Java 程序员 后端

Java教程百度云最新版,极客时间vip年卡,Java开发者面试如何系统复习

Java 程序员 后端

Java日常开发的12个坑,你踩过几个,一招让你拿下seata分布式事务框架

Java 程序员 后端

Java开发视频教程,linux使用教程,BIO和NIO有啥区别

Java 程序员 后端

Java微服务架构图,nginx视频教程百度云,学习指南

Java 程序员 后端

Java性能优化最佳实践,mybatis入门视频

Java 程序员 后端

Java技术成长,kafka学习教程,Java开发者面试如何系统复习

Java 程序员 后端

Java开发还会吃香吗,Java微服务架构从入门到精通

Java 程序员 后端

Java开发面试基础,牛客网客户端,【面试总结】

Java 程序员 后端

国外网友另类方式曝主流浏览器HTML5 bug:localStorage可占满硬盘_JavaScript_彭超_InfoQ精选文章