- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 OAuth 世界的新手,我想了解使用 PKCE 相对于传统授权代码授予的好处。 (我的许多假设可能是错误的,所以我会感谢你的更正。)
我是一名移动应用程序开发人员,根据 OAuth 文档,客户端 secret 不能硬编码到公共(public)客户端的应用程序代码中。避免对客户端密码进行硬编码的原因是黑客可以反编译我的应用程序并获取我的客户端密码。
拥有我的客户端密码和我的 redirect_url 的黑客可以开发一个虚假的应用程序。如果最终用户 (User1) 下载真实应用程序和黑客的应用程序(两者),则虚假应用程序可以监听真实应用程序回调并从中获取授权代码。使用授权代码(来自回调)和客户端 secret (通过反编译我的应用程序窃取),黑客可以获得授权 token 和刷新 token ,并能够获取例如 User1 的数据。
如果其他用户下载真假应用程序,他们的数据也将处于危险之中。我对吗?黑客是否需要两者,或者他/她是否可以仅使用授权码进行攻击?图片第五步需要client secret和授权码吗?
这种攻击称为拦截攻击。
为解决公用客户端应用中客户端密码硬编码问题,使黑客无法获取客户端密码窃取token,PKCE应运而生。使用 PKCE,客户端应用程序代码不需要硬编码客户端密码,因为 PKCE 不需要该信息来获取最终用户的 token 。
PKCE 流程创建一个随机字符串,将其转换为 SHA-256哈希值和 Base64。在图像的第二个点中,该编码字符串与 client id 一起发送到身份验证服务器。然后在回调中发送授权代码,如果任何恶意应用程序拦截代码,它将无法获得 token ,因为图像的第五点需要合法应用程序创建的原始随机字符串。
这很好,但是如果不再需要客户端密码来获取访问 User1 数据的 token ,我如何才能避免黑客开发一个假的应用程序,该应用程序使用 PKCE 流和我的客户端 ID 并获取 token 认为该应用是合法应用的用户?
由于图像的第五步不再需要客户端 key 来获取 token ,任何人都可以使用我的公共(public)客户端 ID 开发假应用程序,如果任何用户下载假应用程序并执行 OAuth 流程,黑客可以获得其 token 并访问该用户数据!
我说得对吗?
最佳答案
if the client secret isn't need anymore to get the tokens to access User1 data, how can I avoid a hacker developing a fake App which use PKCE flow with my client id and getting the tokens of the users who think that app is the legitimate one?
OAuth 2.0 或 PKCE 无法防止“虚假应用”。
PKCE 确实可以防止设备上的恶意应用程序窃取用于另一个应用程序的 token 。例如。想想银行应用程序,如果设备上的另一个应用程序可以获得银行应用程序正在使用的 token ,那就不好了。这就是您的图片中说明的情况,PKCE 对此进行了缓解。
As the 5th step of the image don't need anymore the client secret to get the tokens, anyone could develop fake apps using my public client id.
移动应用程序无法保护客户端 secret ,类似于 JavaScript 单页应用程序。因此,根据 OAuth 2.0,这些客户端是公共(public)客户端,而不是 secret 客户端。只有 secret 客户才能以安全的方式保护客户 secret ,只有那些应该使用客户 secret 。 PKCE 是一种适用于公共(public)客户端 的好技术,但也可用于 secret 客户端。
if any user downloads the fake app and do the oauth flow, the hacker could get it's tokens and access that users data!
联系 Apple Store 或 Google Play 商店获取“虚假应用”,或使用例如反恶意软件应用程序。这就是针对“假应用程序”的缓解措施。 PKCE 仅缓解同一设备上的另一个应用程序试图窃取为另一个应用程序(例如银行应用程序)颁发的 token 的情况。
关于security - 了解 PKCE 与授权码授予的优势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70767605/
首先对WCF与WebService的定义进行概括,接着介绍了WCF的优势,最后就是对WCF与WebService两者的根本区别进行比较,具体内容如下 1、定义 1.WebService:严格来
关闭。这个问题是opinion-based .它目前不接受答案。 想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题. 5年前关闭。 Improve t
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 8 年前。 Improve
谁能告诉我将下一个脚本标记放在 元素之后和将它放在 元素之前有什么好处? (function (){ var script = document.createElement("script"); s
我最近遇到了一个 JavaScript 脚本,其中作者似乎试图避免在代码中使用字符串并将所有内容都分配给一个变量。 所以代替 document.addEventListener('click', (e
Scott Meyers 在“Effective Modern C++”中说表达式 Matrix sum = m1 + m2 + m3 + m4 (其中所有对象的类型均为 Matrix)“如果 ope
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
免责声明:我是网络开发的新手,所以请多多包涵... 堆栈:Angular 前端,后端的 Tornado(基于 python)网络服务器 我一直在使用 RxJs 和 WebSocket 成功地与后端通信
我一直在调查我的 Flutter 应用程序的 JSON 解析,并且有一个关于我无法解决的工厂构造函数的问题。我试图了解使用工厂构造函数与普通构造函数的优势。例如,我看到很多 JSON 解析示例,它们使
添加 SQL 后尝试打开 TadsQuery 时出现 5400 AE_INTERNAL_ERROR。当我将相同的 SQL 直接放在 TadsQuery 中时,没有错误。您的帮助文件指示我联系 Adva
关闭。这个问题是opinion-based .它目前不接受答案。 想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它. 8年前关闭。 Improve this
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 9 年前。 Improv
我想定义一个函数,当给定一个整数时,它将返回一个字符串。像这样: # Pseudocode function get_string(i) return my_string_array[i] end
我曾尝试在 Linux 和 Windows 上使用 DBD::Advantage,但没有成功。 Windows 版本附带了一个看似完整的安装程序,但它留下了 DBD-Advantage-8.10.ta
为什么说 NoSQL 在结构上比某些 SQL 数据库更快?假设我在某个 SQL 表的列上添加了一些索引。有人可以提供某种更快的查询吗? 我正在阅读有关 redis 的内容。 class User <
我的问题很简单:如果接口(interface)由单个类实现,那么使用接口(interface)有什么好处吗? 我一直认为只有当该接口(interface)有多个实现时,接口(interface)才是好
考虑这些(或多或少)等价的类型签名: f1 :: [a] -> Int -> a f2 :: Integral b => [a] -> b -> a f2 比 f1 更通用,这是一个很大的优势,但是
我们在 Scala 中部分应用了函数- def sum(a:Int,b:Int,c:Int) = a+b+c val partial1 = sum(1,_:Int,8) 我想知道使用部分应用函数的优点
你看下面的代码,我是如何使用 session 变量的;所以这三个问题是: 它们存放在哪里? (服务器或客户端) 它们对于每个网页访问者来说都是独一无二的吗? 我可以在完成工作后使用 ajax 或简单的
我知道这是一个常见问题,互联网上有关于此主题的资源,但我想从这个社区了解每个人在部署博客时对子域与子文件夹的想法(SEO 优势)。 谢谢。 最佳答案 我研究过一次,根据社区反馈以及权衡利弊,我会说去一
我是一名优秀的程序员,十分优秀!