【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

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

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

关注

评论

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

网络技术探析:SDN、SD-WAN、CDN和SDH的关联与演进

Ogcloud

SD-WAN 企业网络 SD-WAN组网 SD-WAN服务商 SDWAN

跨越千年医学对话:用AI技术解锁中医古籍知识,构建能够精准问答的智能语言模型,成就专业级古籍解读助手(LLAMA)

汀丶人工智能

人工智能 自然语言处理 LLM 医疗大模型

漫谈数据分布可视化分析

百度Geek说

数据分析

探秘SuperCLUE-Safety:为中文大模型打造的多轮对抗安全新框架

不在线第一只蜗牛

人工智能 大模型 ChatGPT

AI技术革命下的平台能力升级:大模型时代的挑战与机遇

百度开发者中心

人工智能 大数据 计算 大模型

华为云软件开发生产线CodeArts前端DevOps实践

华为云PaaS服务小智

云计算 软件开发 华为云

graphpad prism for Mac(专业医学绘图工具) v10.2.0激活版

iMac小白

分享6个当下最受欢迎的 Vue UI 库

伤感汤姆布利柏

Garden Planner for Mac(园林绿化设计软件) v3.8.58注册激活版

iMac小白

【前沿技术】 阿里开源搜索引擎Havenask的消息系统

阿里技术

搜索引擎 消息系统 Havenas 阿里开源

Metasequoia 4 for Mac(水杉3D建模器) v4.8.6e激活版

iMac小白

SD-WAN如何降低运维成本、简化运维工作?

Ogcloud

SD-WAN 企业网络 SD-WAN组网 SD-WAN服务商 SDWAN

听 GPT 讲 client-go 源代码 (11)

fliter

真香!NineData SQL 开发全面适配 GaiaDB

NineData

数据库 百度云 数据源 NineData GaiaDB

Aiseesoft AnyCoord for Mac(GPS虚拟定位软件) v1.0.36激活版

iMac小白

小程序SDK在金融、医疗和教育等场景中的安全性保障

Geek_2305a8

听 GPT 讲 client-go 源代码 (12)

fliter

低代码平台源代码交付的重要性

互联网工科生

源码 软件开发 低代码

OpenAI Sora 关键技术详解:揭秘时空碎片 (Spacetime Patches) 技术

Baihai IDP

程序员 AI openai 白海科技 sora

2024年,你应该知道的Linux新命令

伤感汤姆布利柏

语言大模型的现状与未来趋势

百度开发者中心

深度学习 大模型 人工智能、

SD-WAN保障tiktok海外直播网络的稳定性

Ogcloud

SD-WAN 企业网络 SD-WAN组网 SD-WAN服务商 SDWAN

不懂技术也能轻松搭建网站!美国虚拟主机的简易指南!

一只扑棱蛾子

虚拟主机 美国虚拟主机

专精特新“广东造” | 华大北斗:从“芯”出发 挺起产业“脊梁”

江湖老铁

CyberData镜像增量构建实践

数新网络官方账号

镜像增量 增量构建

浅谈数据分析工具在智慧城市中的作用

伤感汤姆布利柏

什么是DevOps

华为云PaaS服务小智

DevOps 软件开发

JavaScript 的新数组分组方法

EquatorCoco

JavaScript 数组 开发语言

Native Instruments Kontakt 7 for Mac v7.8.1激活版下载

iMac小白

低代码开发:拖拉拽自定义表单的创新之道

这我可不懂

软件开发 低代码

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