gpt4 book ai didi

oauth - 共享Google API项目的客户 secret 时是否存在安全方面的顾虑?

转载 作者:行者123 更新时间:2023-12-03 13:50:16 25 4
gpt4 key购买 nike

我正在使用YouTube数据API进行项目。我正在运行的Python脚本使用客户端 secret JSON文件,我认为该文件用于验证帐户所有者。如果我对此有疑问并需要帮助,那么公开共享是否有安全方面的担忧?如果将它私下保存在私有(private)github存储库中还可以吗?

最佳答案

如果您检查在Google开发者控制台上创建帐户时同意的Google Developer TOS

enter image description here

与任何人共享此文件都违反了TOS。这是 secret 的,仅适用于创建它的开发人员或开发人员团队。这与您从Google开发者控制台或Google云控制台下载的整个客户端 secret json文件有关。

再次不要共享您的Google secret 文件。无论接受的答案是关于它可能有与否的问题,无论是哪种类型的客户,都无关紧要。共享客户端 secret 文件将使您同意的TOS不稳定。

我对此线程here的另一个答案的更正

有问题的答案有些陈述我非常不同意,并且可能会引起开发人员的困惑。首先,我不是Google的雇员,我的评论是我自己的,并且基于我在使用Google的oauth/身份服务器服务器八年以上的经验以及与Google身份团队联系的经验。我担心以上答案中的某些信息可能会使某些开发人员感到困惑。与其说不共享,不如说是另一个错误,IMO试图解释为什么共享它们并没有那么糟糕。我将解释为什么您绝不共享它们,但事实是它与Google TOS背道而驰。

The security implications depend on the type of client secret. You can tell the difference by whether the key in the JSON file is installed or web.



客户端的类型对安全风险有多大没有影响。如果我们完全忽略什么构成安全风险的定义,而只是说任何人有机会代表该项目访问用户帐户或对用户进行身份验证,将构成很大的安全风险,那么就没有区别了。

使用以下命令,我可以对自己进行身份验证,我所需要的只是您项目的凭据文件

https://accounts.google.com/o/oauth2/auth?client_id={clientid}.apps.googleusercontent.com&redirect_uri=urn:ietf:wg:oauth:2.0:oob&scope=https://www.googleapis.com/auth/analytics.readonly&response_type=code



对于已安装的应用程序,这仅占100%的时间。如果我仅对自己的用户进行身份验证,这为什么不好?然后,我可能会利用自己的邪恶力量针对API发送如此多的请求,以至于目标google开发人员项目将被Google锁定以进行垃圾邮件发送。

如果我窃取了其他用户的登录名和密码,则可以从您的Google开发人员项目登录到他们,并且我可以访问他们的数据,并且Google认为您是在入侵他们。

由于重定向URI,这对Web应用程序来说有点难,但是许多开发人员在开发过程中都将add localhost作为重定向uri并忘了将其删除(请不要在感到骄傲时将localhost作为重定向uri离开) )。因此,如果您在Web浏览器客户端中将重定向URI保留为有效的重定向URI,那么我可以做完全相同的事情。

记住,我现在能够根据您的项目对用户进行身份验证,以访问大多数我自己的数据。但是,如果您还设置了对客户端数据的访问权限,例如通过Google Drive,我也可以访问该数据。 (注意:我不确定我还没有尝试过这一项。)

如果我已通过中间人攻击或通过其他某种方式来获取用户刷新 token ,并且我拥有客户端 secret 文件,则现在可以访问用户数据,因为只要我使用刷新 token 就可以创建新的访问 token 。想。这可能很难实现。

Web application secrets If the client secret is of the web type, then yes: you should absolutely not post it, and invalidate it if it gets exposed. This would allow a malicious entity to impersonate your backend and perform actions on your users' accounts on your behalf.



如上所述,只有在有问题的开发人员为本地主机打开重定向uri或现在拥有您的客户 secret 文件的人也可以访问您的Web服务器时,情况才会如此。一个非常重要的事实是,如果您将本地主机保持打开状态,则可以使用您的凭据建立我自己的网站并进行设置,使其看起来与您的网站完全一样。然后,用户实际上认为他们正在登录Hacker Super令人敬畏的应用程序,从而使他们可以访问用户数据,因此他们认为他们正在登录到您的Super令人敬畏的应用程序。再次,谷歌认为它是你黑客他们。

Installed application secrets If the client secret is an installed-type secret, then it's less problematic to share privately, as it doesn't grant the sorts of abilities a web application secret does, such as the ability to authenticate as users who grant your application permission to access their data. As the documentation notes, "in this context, the client secret is obviously not treated as a secret."



这完全是错误的。已安装的应用程序提供与Web应用程序完全相同的权限,对于Oauth2访问而言,没有区别,无论是为已安装的应用程序还是为Web应用程序创建的,访问 token 都是访问 token 。

如上所述,授予访问已安装的应用程序的安全风险实际上是更糟的。由于没有已安装的应用程序重定向URI。有权访问您的客户 secret 文件的任何人都可以对假设自己为您的用户进行身份验证,因为他们会被显示为您的同意屏幕。不仅您的Google开发人员项目受到了困扰,而且您的用户声誉得到了认可,这些用户认为他们正在对Super awesome应用程序进行身份验证,实际上他们并没有授予窃取您凭据的人访问其数据的权限。

我想补充一件事。如果您向其他人提供您的项目凭据。客户端 secret json文件。您可以让他们代表您拨打电话。如果您设置了欺凌功能,则可以针对Google Maps API说。您需要为他们拨打的电话付费。

我希望这有助于消除与已接受的答案有关的一些困惑。

关于oauth - 共享Google API项目的客户 secret 时是否存在安全方面的顾虑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62315535/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com