写点什么

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

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

关注

评论

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

2025 程序员薪资大洗牌:掌握这 3 个 AI 核心技术,薪资瞬间翻倍

飞算JavaAI开发助手

编程 AI 开发者

25亿专项激励金!百度联盟发布“智跃计划”,开放四大能力赋能开发者

极客天地

低代码困局:方法论迷途与破局之道

代码制造者

低代码

单月飙涨 300%!揭秘MSKE三大核心优势

MSKE铭文

#区块链 比特币行情 MSKE铭文 比特币铭文

如何在Mac上查找、打开和检查活动监视器,教你轻松管理你的Mac任务进程

阿拉灯神丁

CleanMyMac 设计软件 mac系统维护 Mac任务管理器 系统优化软件

看一个有经验的程序员如何学习一门新语言

Marvin

flutter 编程 前端 跨平台 学习分享

Easysearch VS Opensearch 数据写入与存储性能对比

极限实验室

easysearch OpenSearch

为什么我需要AI助手辅助学习python

阿里巴巴云原生

Python

想考试PMP的同学看过来

Marvin

项目管理 pmp IT PMP Certification PMP考试

华为云生态大会2025前瞻:为伙伴们打通行业智能跃迁通路

Alter

SvelteKit 最新中文文档教程(19)—— 最佳实践之身份认证

冴羽

前端 前端框架 React Svelte SvelteKit

黑龙江三级等保-信息安全等级保护制度中的重要级别

黑龙江陆陆信息测评部

流媒体分享系列之用户画像

Marvin

广告 流媒体 用户画像 剧情

流媒体分享系列之广告归因

Marvin

广告 流媒体 广告归因 归因技术

去中心化云算力的12项特征,不只是算力分布式

PowerVerse

去中心化 算力 分布式,

“AI+财务”4月活动地图,诚邀您就近入场!

用友智能财务

财务 峰会 会计

VMware ESXi 8.0U3d macOS Unlocker & OEM BIOS ConnectX-3 网卡定制版 (集成驱动版)

sysin

esxi

2025 年 AI 编程新风向:从智能辅助到自主开发的跨越

飞算JavaAI开发助手

编程 AI 代码

为什么mac文件拖拽不了 mac文件拖不进硬盘里 macbookpro文件无法拖进移动硬盘

阿拉灯神丁

mac三指操作设置 NTFS 磁盘管理器 Tuxera NTFS2024 文件拖拽工具 Mac文件管理

大模型如何辅助软件测试与质量体系?

思码逸研发效能

软件测试 研发效能 软件质量 智能化测试 思码逸

看图学会Kubernetes

Marvin

Docker Kubernetes k8s 学习笔记 虚拟化技术

流媒体分享系列之广告归因方案

Marvin

广告 流媒体 归因 广告归因 广告归因技术

一文弄懂用Go实现MCP服务

王中阳Go

Go MCP

夏日炎炎,透明屏如何散热“冷静”?

Dylan

电子 LED display LED显示屏 夏令营 LED屏幕

表 vs 物化视图:核心区别与选型指南

镜舟科技

分析型数据库 StarRocks 物化视图 实时分析 MPP 架构

YashanDB BIN函数

YashanDB

iVX如何拿捏中大型工程建筑行业砼管理系统

代码制造者

无代码开发 低代码开发中大型系统

为什么我需要AI助手辅助学习python

阿里云云效

Python

Web3 项目开发的技术难点

北京木奇移动技术有限公司

区块链技术 软件外包公司 web3开发

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