【ArchSummit】如何通过AIOps推动可量化的业务价值增长和效率提升?>>> 了解详情
写点什么

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

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

关注

评论

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

Flink 提交作业运行的各种模式总结

shengjk1

flink flink 执行

Python-计算机视觉-OpenCV-调色板

Aldeo

Python OpenCV

【LeetCode】扁平化嵌套列表迭代器Java题解

Albert

算法 LeetCode 3月日更

SQLServer性能调优方法小结

嘉为蓝鲸

数据库 sql 运维 SqlServer MAXDOP

JVM G1GC的算法与实现

Yano

Java JVM GC G1GC

图解TCP的通信机制

零一

TCP 网络

已拿到蚂蚁金服Offer!阿里内部二十三万字Java面试题总结

Java架构追梦

Java 阿里巴巴 架构 面试 金三银四

Swift 5创建和使用Framework, XCFramework 从入门到精通 John 易筋 ARTS 打卡 Week 42

John(易筋)

ARTS 打卡计划 Framework XCFramework

如何在3分钟内实现音频变声和趣味音效?

拍乐云Pano

音视频 RTC 出海社交 社交泛娱乐

万众瞩目的EGG Network,备受期待的New-DeFi自治共识论坛在海口闭幕

币圈那点事

区块链

快速使用Vue3最新的15个常用API(1W5+字详解,建议收藏)

零一

vue.js 大前端 Vue3

硬件工程师必备,常用元器件封装速查表

不脱发的程序猿

28天写作 电路设计 3月日更 元器件封装速查表 电子设计

到底什么是Event Loop?那就来了解一下JavaScript分别在浏览器和Node环境下的运行机制吧

零一

JavaScript 大前端

一文搞懂Flink SQL执行过程

shengjk1

flink flink源码 flink sql flink sql 执行过程

寻找被遗忘的勇气(二十三)

Changing Lin

3月日更

一文搞懂 FlinkSQL 的 KafkaSource

shengjk1

flink flink源码 flink sql

一文搞懂 FlinkSQL函数 LAST_VALUE 的原理

shengjk1

flink flink sql flink 源码

Flink 计算 PV UV

shengjk1

flink flink 实战

使用Redis,你必须知道的21个注意要点

Java 数据库 redis 架构 面试

java deep vs shallow copies

shengjk1

Java deep copy shallow cop

Flink 计算 TopN

shengjk1

flink flink 实战 flink topN

Dubbo的设计理念原来就藏在这三张图中

中间件兴趣圈

dubbo RPC

阿里一战封神,百万人跪求的Java面试手册终于开源;

Java架构师迁哥

FlinkSQL 平台

shengjk1

flink flink sql flink sql 平台

SDK介绍及相关功能测试

行者AI

测试 sdk

nsq源码阅读之diskqueue

werben

nsq Go 语言

Redis新版本开始引入多线程,谈谈你的看法?

Java架构师迁哥

4层板到12层板叠层经典设计方案

不脱发的程序猿

28天写作 电路设计 3月日更 PCB PCB布局

想学IT的必看!漫谈MySQL权限安全,分享一点面试小经验

欢喜学安卓

android 程序员 面试 移动开发

超全Android中高级面试复习大纲,在线面试指南

欢喜学安卓

android 程序员 面试 移动开发

一文搞懂 Flink 中的锁

shengjk1

flink flink 锁

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