QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

HTML5(WebSockets) 的脆弱性?

  • 2012-04-17
  • 本文字数:1126 字

    阅读完需:约 4 分钟

尽管还不是官方的标准, HTML5 的使用和影响力成长迅速。 无论是 Web 移动、或甚至 SOA ,似乎都有一个 HTML5 的整合战略。然而,HTML5 不仅仅是一个原有的标记语言的更新,因为它包含了其他方面如 JavaScript 和 WebSockets 。最近我们已经听到了很多WebSockets 有关的内容,包含技术的引进和是否有任何对于REST 的影响。然而,近期 Lori Macvittie 辩论说 WebSockets 可能会导致一个不太安全的网站,如果人们以安全换取性能的话。 她从 2011 年的一份报告指出,很多人都已经习惯于这样做,并且已经有一个调查发现了这类情况…

…而 91%的受访者不仅在安全性和性能之间的进行权衡,实际上整整 81%是禁用安全功能的特性。

但是这个和 WebSockets 什么关系呢?Lori 认为是因为 WebSockets 删除了 HTTP 头,暴露了病毒和恶意软件扫描需要的漏洞:

你知道,像 content-type 的东西;你也知道,header 告诉终端正在传输什么样的内容,如 text/html 和 video/avi。反病毒和恶意软件扫描解决方案非常擅长特定类型内容的检测异常。问题是,在没有 MIME 类型的情况下,能够正确识别一个给定的对象变得有点难以确定。

当然,依赖于 HTTP 头不能保证避免恶意内容,但 Lori 提到:

[…] 一般来说,服务数据的应用对数据类型是不会撒谎的。很少会有恶意代码去利用这方面的弱点。毕竟恶意代码的目的是用一个指定的媒介传递恶意负载,这才是利用漏洞的基本原则—让系统针对恶意负载执行一套特定的指令。这意味着你真的需要终端相信内容就是如它所认为的那种类型。

Lori 接着说可扩展性方面的 WebSockets(子协议扩展),它允许额外的有线格式和协议来定义,通过阻止防火墙来缓解问题而产生更多的问题:

[…] 没有办法肯定地知道什么正在通过 WebSocket 传递,除非你使用它的语言“说话”。这一切混乱的结果是,设计的安全软件扫的描特定类型内容不能为特定的签名或异常。他们不能提取通过 WebSocket 的传送对象、因为没有迹象表明什么地方开始或结束,甚至它是什么。如果在传送过程中 HTTP 头里的数据丢失,这包括类型与长度,那将给任何使用这些数据来解压或者处理相应数据的软硬件带来问题。

之前已经有了关于 WebSocket 的实现和协议安全漏洞的报告, 就像过去几年有与其他 Web 协议的报告一样。当然,分布式系统的安全性比 HTML 早了几十年, 尤其是二进制协议。所以让二进制系统安全是有可能的,但 Lori 的观点似乎是,虽然我们要朝着更高性能的 Web 方向努力,但我们不应该忽视的事实是,绝大多数的 Web 基础架构是基于 HTTP 的,这不是轻易地删除或更换就可以的,事情总会因为各种原因出问题,甚至更糟。既然采用 WebSockets 似乎是不可避免的, 那现在是时候后退一步去考虑基于 WebSockets 的世界应该是什么样的的,至少从安全的角度来说。

2012-04-17 07:125790
用户头像

发布了 42 篇内容, 共 18.0 次阅读, 收获喜欢 5 次。

关注

评论

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

准备去阿里以及大厂面试你都需要会些什么?我从任职阿里的朋友口中,总结出了一些答案!

Java架构之路

Java 程序员 架构 面试 编程语言

敏捷与安全不可兼得吗?看完这篇文章后,我想说:未必!

华为云开发者联盟

敏捷 安全 开发

打造新一代企业数据驱动体系

StarRocks

数据库 大数据 数据分析 数字化转型 OLAP

我画了 40 张图就是为了让你搞懂计算机网络层

苹果看辽宁体育

计算机网络 IP 网络层 ipv6 ipv4

2020年国内前端团队都做了些什么?

徐小夕

大前端 技术栈 2021

面试官:数据库自增ID用完了会怎么样?

艾小仙

数据库

软件架构设计方案实战

Andy

基于GaussDB(DWS)的全文检索特性,了解一下?

华为云开发者联盟

数据库 数据仓库 数据

Flink SQL 实战:HBase 的结合应用

Apache Flink

flink

Flink 双流 Join 的3种操作示例

Apache Flink

flink 流计算

基于 Flink+Iceberg 构建企业级实时数据湖

Apache Flink

大数据 flink 流计算

40亿条/秒!Flink流批一体在阿里双11首次落地的背后

Apache Flink

flink 流计算

优化了MYSQL大量写入问题,老板奖励了1000块给我

华为云开发者联盟

MySQL sql 写入

内存分页不就够了?为什么还要分段?还有段页式?

yes

操作系统 内存管理

light-rtc: 理念与实践

阿里云CloudImagine

架构 音视频 WebRTC RTC

架构师训练营第六周作业

zamkai

阿里拆中台?从架构师角度解读中台

javaba韩老师

架构 中台战略 TOGAF 中台的前世今生 中台的由来

曲折!目标腾讯,字节,拼多多;最后居然五面进了阿里?

Java架构之路

Java 程序员 架构 面试 编程语言

干货|原来IPFS是这样存储文件的

QTech

区块链技术 IPFS 星际文件系统

重学JS | 数组知识点大全,必收藏!

梁龙先森

大前端 编程语言

完美!华为爆出Redis宝典,原来Redis性能可压榨到极致

996小迁

redis 架构 面试 资料

Polkadot系列(四)——Polkadot茶溪岸啤(XCMP),干杯!

QTech

区块链技术 polkadot 跨链

软件测试--前后端数据交互

测试人生路

软件测试

深层互联带领自动旅游讲解耳麦进入“非入耳”时代

DT极客

AI人脸识别技术门禁系统解决方案智慧社区建设

13828808769

人脸识别 智慧城市 智慧平安小区平台开发 刷脸

开源整套Netty源码笔记+19个案例调优+游戏项目,终于彻底顿悟了

Java架构追梦

Java 源码 架构 Netty 游戏项目

面试腾讯,字节跳动首先要掌握的Java多线程,一次帮你全掌握

Java架构之路

Java 程序员 架构 面试 编程语言

面试软件测试所需要掌握的7个技能

华为云开发者联盟

sql 面试 测试

主从哨兵集群终于给你说明白了

moon聊技术

数据库 redis

2020年不容错过的10本大咖之作 | 你最Pick哪一本?

博文视点Broadview

LeetCode题解:264. 丑数 II,三指针,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

HTML5(WebSockets)的脆弱性?_安全_Mark Little_InfoQ精选文章