IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> Oauth2.0 CSRF攻击防范与PKCE -> 正文阅读

[网络协议]Oauth2.0 CSRF攻击防范与PKCE

在这里插入图片描述

CSRF攻击

上图是OAuth2.0授权码授权流程,可以看到,流程中用户整体发起了两次请求到认证服务器后端,且这两次请求是分离的,因此给攻击者发起CSRF攻击制造了条件。即攻击者通过前三步生成攻击者的含授权码的RedirectURL,引导在webapp上已登陆的用户点击恶意网站上的恶意链接(攻击者的含授权码的RedirectURL),这样就会继续步骤6后续流程,造成webapp登陆的用户账号绑定攻击者的第三方账号。

可以看到,CSRF攻击应用在授权码认证流程的条件是用户必须已经登录了第三方网站。即通过将攻击者微博账号与第三方应用账号绑定,获得用户第三方账号相关内容,以实现攻击。

OAuth2.0也提供了相应的解决方案,就是步骤2增加state随机字段,并在步骤5校验,即可验证用户有效性。

具体流程如下:

1、用户甲到第三方网站A登录后,到了绑定页面。此时还没绑定微博。绑定页面提供一个按钮:“绑定微博”(地址a: http://aaa.com/index.php?m=user_3rd_bind_sina )

2、用户点击地址a,程序生成如下地址b(为方便大家查看,参数部分均未urlencode以【】包含显示): https://api.weibo.com/oauth2/authorize?client_id=【9999999】&redirect_uri=【http://aaa.comindex.php?m=user_3rd_bind_sina_callback】&response_type=【code】&state = xyz123456

3、用户甲浏览器定向到地址b,授权该应用。

4、授权服务器根据传递的redirect_uri参数,组合认证参数code生成地址c: http://aaa.comindex.php?m=user_3rd_bind_sina_callback&code=【809ui0asduve】&state = xyz123456

5.第三方网站服务器本地校验state参数是否符合,并进行后续流程。这样,第三方网站服务器就有了验证两次发送到微博授权平台是否属于同一流程的能力。

PKCE增强

PKCE,全称 Proof Key for Code Exchange。这其实是通过一种密码学手段确保恶意第三方即使截获Authorization Code 或者其他密钥,也无法向认证服务器交换Access Token。

那么上述流程为何回呗第三方截获呢?这与客户端的安全性有关,与有服务端的客户端不同,原生客户端(即没有服务端的纯桌面应用程序、安卓、IOS、浏览器插件程序等)在授权码模式下,客户端clientID clientSecret的安全性是无法得到保证的,因此有可能被攻击者利用。

基于上述原因,OAuth提供了PKCE增强的授权码模式,主要区别在于,请求/authorize接口之前生成了code_verifier,code_challenge,并携带code_challenge。在请求/token是携带code_verifier在服务提供方来校验身份。

在这里插入图片描述

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-03-10 22:59:52  更:2022-03-10 23:02:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 6:38:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码