写点什么

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:125730
用户头像

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

关注

评论

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

极客时间运维进阶训练营第七周作业

9527

微信业务架构图 & 学生管理系统

chinandy

架构设计

架构实战营(第10期)模块一作业

Geek_e5f2e5

React源码分析1-jsx转换及React.createElement

goClient1992

React

算法 KECP 被顶会 EMNLP 收录,极少训练数据就能实现机器阅读理解

阿里云大数据AI技术

自然语言处理 机器学习 12 月 PK 榜 机器阅读

损失高达3亿美元|如何保护源代码安全?

SEAL安全

12 月 PK 榜 源代码安全 最小权限管理 零信任模型

React源码分析3-render阶段(穿插scheduler和reconciler)

goClient1992

React

React Context源码是怎么实现的呢

flyzz177

React

模块一:课程作业

peter

#架构实战营

从观察者模式到Java事件处理机制(上)

老农小江

设计模式 java 编程 事件机制

React源码分析2-深入理解fiber

goClient1992

React

前端工程师leetcode算法面试必备-二分搜索算法(上)

js2030code

JavaScript LeetCode

架构实战营-模块1-作业

zealot0317

MySQL执行计划之explain详解

@下一站

程序 MySQL优化 dba 11月日更 11月月更

架构实战模块一:架构图

小飞同学

#架构实战营

用javascript分类刷leetcode3.动态规划(图文视频讲解)

js2030code

JavaScript LeetCode

Git实战(四)| Git分支管理实操,搞定在线合并和本地合并

霍格沃兹测试开发学社

架构实战营模块一作业

周烨

ChatGPT中文版杀疯了,已登录AI模型市场

felix

React源码解读之React Fiber

flyzz177

React

十大开源测试工具和框架

FunTester

群晖DS218+做maven私服(nexus3)

程序员欣宸

maven 12月月更 群晖

潦草手写体也能轻松识别,快速提取文字不用愁

HarmonyOS SDK

HMS Core

ReactDOM.render在react源码中执行之后发生了什么?

flyzz177

React

前端刷完这12道滑动窗口,就可以出山面试了

js2030code

JavaScript LeetCode

从观察者模式到Java事件处理机制(下)

老农小江

设计模式 java 编程 事件机制

Git实战(五)| 让工作更高效,搞定Git的分支管理

霍格沃兹测试开发学社

手把手教你构建数据安全体系,守住安全合规红线

王巍

数据安全

API安全中的数据隐私保护步骤

穿过生命散发芬芳

API安全 12月月更

模块一作业提交

Geek_7d539e

架构实战营-模块一作业

落叶挂云霄

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