websocket网络层详解_【技术分享】WebSocket漏洞与防护详解
2017-05-02 14:15:48 阅读:1889次
预估稿费:120RMB
投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿
socket简介
一个socket是一次网络通信中的一个端点。socket总是分为两部分:一个IP地址和一个端口。
例如:当您访问www.securelayer7.net时,你的计算机和网站的服务器正在使用socket(端点)进行通信。网站的端点将是:www.securelayer7.net:80,你的计算机的端点将是你的IP地址,后跟任何随机端口号,如192.168.0.111:6574
关于WebSocket
传统上,HTTP活动是由客户端请求资源而服务器来提供服务。服务器不能自己与客户端通话。但这个限制已经被新技术WebSocket消除了。
WebSockets提供持久连接,也称为客户端和服务器之间的全双工连接,双方可以随时使用该连接开始发送数据。
它是如何工作的?
客户端,如浏览器,加载具有WebSocket功能的网页。
页面的源代码负责创建WebSocket连接。
该脚本通过WebSocket握手建立WebSocket连接。此过程从客户端向服务器发送常规HTTP请求开始。此请求中包含upgrade请求头,通知服务器客户端希望建立WebSocket连接。
请求如下所示:
值得注意的是,WebSocket使用ws作为访问方案而不是http。所以,上面的请求访问了:ws://127.0.0.1:9000 / websocket
如果服务器支持WebSocket(针对上述请求),则它将在其响应中使用upgrade请求头进行回复。
响应如下所示:
在这个阶段,协议将从HTTP切换到WS。并且在浏览器和服务器之间建立全双工连接。
在这个例子中,我们有一个WebSocket功能,它回传客户端发送的所有单词。例如:如果用户键入单词“Hiii”,那么服务器也会用“Hiii”来回复。
请求:
响应:
用户界面:
WebSockets的安全隐患
A.跨站WebSocket劫持
注意下面的请求。Origin头有不同的来源127.0.0.1:5555。该请求是使用受害者的cookie发送到WebSocket服务器。这意味着可以使用WebSocket发送类似于CSRF的攻击。
但是,这种攻击不止像CSRF将POST数据发送到WebSocket服务器,它还会读取服务器响应。这是因为默认情况下WebSocket服务器不检查“Origin”头,它只是使用cookies检查经过身份验证的用户会话,并将响应发送回请求的“Origin”。
因此,在上述情况下,攻击者也可以读取响应,从而代表受害者控制双向通信。
防护:
检查请求的“Origin”头。既然,这个标题是为了防止跨源攻击。如果“Origin”不被信任,那么只需拒绝该请求。例如:如果您的网站的域名为www.example.com,请检查请求是否源自该来源,如果是,则处理该请求。如果否,则拒绝。
另一个解决方案是使用基于会话的个人随机令牌(就像CSRF-Tokens)。生成服务器端,并将它们放在客户端的隐藏字段中。并要求验证。
B.网络敏感信息泄露
就像HTTP是纯文本协议一样,WebSockets协议也称为纯文本。这导致攻击者捕获和修改网络上的流量。
防护:
建议使用加密(TLS)WebSockets连接。它的URI方案是wss://。默认端口为443。
如下演示,请求访问ws://127.0.0.1:900/websocket/。如果它是一个安全连接,那么请求将访问wss://127.0.0.1:900/websocket/。
C.拒绝服务
默认情况下,WebSockets允许无限制的连接导致DOS。以下是无限次连接到WebSocket服务器的小脚本。
执行此脚本后,让我们看看WebSocket服务器的日志:
我们可以看到,几秒钟内就已经完成了475个连接。这将耗尽服务器资源,最终导致DOS攻击。
防护:
使用基于IP的速率限制将有助于解决这个问题。
速率限制应允许5-10连接自由,即不进行任何安全检查。但在10个连接之后,如果同一个IP尝试连接,那么应该向用户显示验证码,以确保自动化工具不会产生恶意请求,同时合法用户不会被拒绝服务。
结论
WebSockets非常适合全双工通信,有许多聊天应用程序和社交网站使用。实现WebSockets使应用程序更具可用性和吸引力。但就像任何其他技术一样,也需要在考虑安全性的情况下使用。
参考文献
websocket网络层详解_【技术分享】WebSocket漏洞与防护详解相关推荐
- mysql slowlog中querytime分析_技术分享 | Slow Query Log 使用详解
作者:宓祥康 爱可生交付服务部团队 DBA 擅长日志分析.问题排查等:主要负责处理 MySQL 与我司自研数据库自动化管理平台 DMP 的日常运维问题,对数据库及周边技术有浓厚的学习兴趣. 本文来源: ...
- mysql capi函数详解_技术分享|MySQLCAPI参数MYSQL_OPT_READ_TIMEOUT的一些行为分析
作者:戴岳兵 MYSQL_OPT_READ_TIMEOUT 是 MySQL c api 客户端中用来设置读取超时时间的参数.在 MySQL 的官方文档中,该参数的描述是这样的: MYSQL_OPT_R ...
- html5 websocket java 聊天室_如何利用WebSocket实现网页版聊天室
花了将近一周的时间终于完成了利用WebSocket完成网页版聊天室这个小demo,期间还走过了一段"看似弯曲"的道路,但是我想其实也不算是弯路吧,因为你走过的路必将留下你的足迹.这 ...
- python个人博客搭建说明书_技术分享|利用Python Django一步步搭建个人博客(二)...
原标题:技术分享|利用Python Django一步步搭建个人博客(二) Hello,欢迎来到我们的"利用Python Django一步步搭建个人博客"系列的第二部分.在第一部分中 ...
- 对称加密算法_技术分享丨这是一篇简单的小科普——什么是对称加密算法?(下)...
大家好~我是贾正经,又到了干货满满的技术分享趴啦~ 上期我们讲解了对称加密算法的小知识,并介绍了国密算法中SM4算法的原理.(上集回顾) 本期带大家了解一下分组密码的五个模式. 分组密码的模式 首先了 ...
- mysql优化说出九条_技术分享 | MySQL 优化:为什么 SQL 走索引还那么慢?
原标题:技术分享 | MySQL 优化:为什么 SQL 走索引还那么慢? 背景 2019-01-11 9:00-10:00 一个 MySQL 数据库把 CPU 打满了. 硬件配置:256G 内存,48 ...
- 干涉测量技术的应用_技术分享 | 石化行业测量仪表应用在线答疑
众所周知,在化工和石化这类流程行业当中,稳定性和持续性是至关重要的生产"命脉",对于生产过程中使用的测量仪表有着极其严格的要求. 不仅所有测量仪表都必须满足严苛的国际标准,如PED ...
- 大表与大表join数据倾斜_技术分享|大数据技术初探之Spark数据倾斜调优
侯亚南 数据技术处 支宸啸 数据技术处 在大数据计算中,我们可能会遇到一个很棘手的问题--数据倾斜,此时spark任务的性能会比预期要差很多:绝大多数task都很快执行完成,但个别task执行极慢或者 ...
- java生成sm4算法的对称密钥_技术分享丨这是一篇简单的小科普——什么是对称加密算法?(下)...
原标题:技术分享丨这是一篇简单的小科普--什么是对称加密算法?(下) 大家好~我是贾正经,又到了干货满满的技术分享趴啦~ 上期我们讲解了对称加密算法的小知识,并介绍了国密算法中SM4算法的原理. 本期 ...
- hive中字段长度函数_技术分享:hive常用内部函数
原标题:技术分享:hive常用内部函数 hive常用内部函数 hive是一种典型的数据仓库分析工具,常用语编写hql语句进行指标分析.在编写hql的过程中无疑会用到很多的函数,哪本章来编写一些常见的函 ...
最新文章
- JS性能--DOM编程之重排与重绘
- Oracle的不完全恢复
- Raft协议安全性保证
- Spring Data JPA框架
- 虚拟环境--virtualenv
- mac好用的图片转文字,ocr文字识别工具:Text Scanner
- 在线计算机性能测试,电脑性能检测
- 仿短视频竖屏播放美nv源码 源码仅供技术参考
- echar生成雷达图
- labview与android,LabVIEW与Android手机的无线视频实时传输
- pem证书转p12和p12证书转cert、key
- 网站服务器被劫持,网站服务器被劫持了怎么修复
- Amigo 源码解读
- 邓仰东专栏|机器学习的那些事儿(一)
- IDEA提交git代码,配置文件乱码
- 计算机三级网络技术路由配置,计算机三级网络技术(7):路由器配置及使用(上)...
- 音乐播放器的滚动歌词的实现
- 赤手空拳如何成就百万富翁?——网络营销之七(第四招:百度文库+)
- PHP在线自动发卡网源码 一键安装版
- Python可视化数据分析02、Scrapy框架-强化测试Scrapy-CSS
热门文章
- Why AG3 client 815 transport entries disabled
- 如何找到点击Object ID 白屏问题的root cause
- Triangle Leetcode
- php非,通过非数字和字符的方式实现PHP WebShell
- java python混合开发_Go+Python双语言混合开发
- Tomcat启动报内存溢出错误解决(两种)
- python读取大文件内容_Python模块linecache处理大文件
- php分页实例下载,PHP文件操作实例总结【文件上传、下载、分页】
- 最近公共祖先_LCA 最近公共祖先
- oracle删除unique key,概述Oracle Unique约束