我有一个 Electron 应用程序,它基本上是一个 Google Drive 客户端。我打算使用 OAuth 2。
但是,Google API 要求我在生成 client_secret 的地方注册我的应用程序。由于这是一个桌面应用程序,因此我将 client_secret 存储在服务器中。认证URL在服务器中生成并发送给用户。
我担心人们可以冒充应用程序并代表我的 client_secret 执行操作。如果怀有恶意的人创建未经授权的应用程序并向我的服务器发送请求,理论上他们可以代表我的应用程序执行恶意操作。
我可以采取什么措施来缓解这个问题,或者这不是一个问题?
编辑:人们只能访问自己的文件。就像他们在drive.google.com上一样(读/写/删除文件)
Edit: 验证请求是否来自您的桌面应用程序而不是它到服务器的克隆实际上是不可能的除非您控制它的安装位置,但对于用户程序您则不能。你可以设置一些微薄的障碍,但你不能提供任何保证。看起来 iOS/Android 正在这方面取得进展,我想唯一可行的实现是操作系统代表您发送经过验证的凭据,即操作系统级别的支持,而不是应用程序级别的支持。
至于一般的 OAuth 2.0 身份验证方法...
如果我们按照这里的动作,我们可以分析每种授权方法并看看其风险。https://developers.google.com/identity/protocols/OAuth2 https://developers.google.com/identity/protocols/OAuth2
-
https://developers.google.com/identity/protocols/OAuth2WebServer https://developers.google.com/identity/protocols/OAuth2WebServer (I think you're in this camp, but there's no
client_secret
here)
-
仅存在针对您的客户端凭据的 DOS 风险。响应只会被确认并转发到指定的重定向 Uri,因此可以代表您发出令牌请求,但只有您的服务器才会收到令牌(假设用户代理是不错的),您应该处理以下情况您收到未知的令牌响应。
-
https://developers.google.com/identity/protocols/OAuth2InstalledApp https://developers.google.com/identity/protocols/OAuth2InstalledApp
-
用户安装恶意应用程序的风险。当你失去了client_id
, client_secret
和redirectUri
(您无法将这些内容保密以防止设备调试),那么任何人都可以代表您制作应用程序。对于移动应用程序来说,这是一个不幸的问题。目前唯一的防御措施是用户同意屏幕,也就是说,希望用户通过查看同意屏幕注意到他们已被欺骗从商店安装恶意应用程序而不是合法应用程序。
我希望看到这方面的更多工作,也许应用程序商店可以代表您保存一些凭据,然后确认这是您的应用程序的请求,我想这将涉及一些哈希检查等。
我更乐意在这个问题上得到纠正,但我认为没有什么可以阻止上述问题:P
-
https://developers.google.com/identity/protocols/OAuth2UserAgent https://developers.google.com/identity/protocols/OAuth2UserAgent
-
https://developers.google.com/identity/protocols/OAuth2ForDevices https://developers.google.com/identity/protocols/OAuth2ForDevices
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)