写点什么

国外网友另类方式曝主流浏览器 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:554267
用户头像

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

关注

评论

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

软件架构-概述

架构

web前端培训4个常见的算法问题分享

@零度

算法 前端开发

一文搞懂│工厂模式、单例模式、策略模式、适配器模式、观察者模式的原理和使用

设计模式 策略模式 观察者模式 适配器模式 7月月更

java培训如何防止 jar 被反编译

@零度

JAVA开发 jar被反译

2022年中国互联网医疗年度盘点

易观分析

互联网医疗

阿里云机器学习平台PAI论文高效大模型训练框架Whale入选USENIX ATC'22

阿里云大数据AI技术

深度学习 分布式训练 异构计算

DNS稳定性建设实战-从主机到k8s

boaker

k8s DNS 成本优化 DNS故障 稳定性保障

『51单片机』十分钟学会定时器

謓泽

7月月更

新思科技聚焦开源治理 助力提升中国开源产业安全及合规水平

InfoQ_434670063458

开源 软件 供应链 新思科技

6月月更开奖!速来领取你的奖品!

InfoQ写作社区官方

热门活动 6月月更

ShardingSphere 云上实践:开箱即用的 ShardingSphere-Proxy 集群

SphereEx

数据库 云原生 ShardingSphere

查找——概念了解

乔乔

7月月更

将 Terraform 生态粘合到 Kubernetes 世界

阿里巴巴云原生

阿里云 容器 云原生 KubeVela terrafrom

数据架构师、数据分析师、数据工程师哪个工资更高?

雨果

数据分析师 数据工程师 数据架构师

JS 逆向 SMZDM 的登录加密,你学过全文扣JS代码解密吗?

梦想橡皮擦

Python 爬虫 7月月更

干货分享 | 数据仓库如何应对资源不足?9招解除故障

雨果

数据仓库

互联网裁员潮来袭,这5类职场人最容易被淘汰

雨果

互联网裁员

得物App数据模拟平台的探索和实践

得物技术

大前端 方案设计 Mooncake 数据模拟平台

官宣|九章云极DataCanvas核心产品通过 “可信大数据”权威评测

九章云极DataCanvas

人工智能 大数据 数据处理 中国信通院 实时决策

国产EDA验证调试工具实现破局 助力芯片设计效率提升

科技热闻

TiFlash 面向编译器的自动向量化加速

PingCAP

TiDB

JAVA编程规范之命名风格

源字节1号

软件开发

新思科技助力提升开源治理水平

InfoQ_434670063458

开源 新思科技 软件供应链

大数据基础知识介绍

Lansonli

大数据 7月月更 大数据基础

离线批处理的咽喉——Flume基础配置简析

怀瑾握瑜的嘉与嘉

flume 7月月更

数据治理实施前必须准备的21条锦囊妙计

雨果

数据治理

想低成本保障软件安全?5大安全任务值得考虑

SEAL安全

安全左移

《看完就懂系列》聊聊CSS3的 calc() 函数

南极一块修炼千年的大冰块

7月月更

一文读懂:本地数据湖丨数据仓库丨云数据湖的利与弊

雨果

数据仓库 数据湖

AOP 注解详解

武师叔

7月月更

百问百答第46期:极客有约——可观测四类问题的核心思想解析

博睿数据

APM 智能运维 博睿数据 可观测 性能监测

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