以纯文本形式声明授权凭据是一种好习惯吗?
Is it good practice to declare authorization credentials in plain text?
以纯文本形式声明 GCP 应用程序授权凭据(即客户端 ID 和客户端密码)是否是一种好的做法?
我一直在使用 C# 开发 Windows 桌面应用程序,其中涉及将文件上传到 Google 云端硬盘。我真正担心的是,当我必须发布该应用程序时,应用程序的 客户端 ID/Client 秘密将被公开,因为我已将它们作为变量存储在应用程序中。安全吗?或者有没有其他更好的方法可以在使用 GCP 授权时将它们存储在您的应用程序中?
OAuth 是关于用户授权应用程序使用他们的资源。如果这是其他人正在使用的将文件发送到他们的 Google 驱动器的应用程序,那么他们应该将他们的 自己的 凭据输入该应用程序。
如果其他人使用该应用程序将文件上传到您的 Google 驱动器,那么由于您描述的原因,OAuth 不是执行此操作的正确方法。相反,您可能需要某种 API 供桌面应用程序调用,它可以隐藏凭据以从 end-user 访问 Google 驱动器。然后,您将有一个不同的身份验证问题,以确保只有您打算打电话给 API 的人会打电话给它。
这真是一个相当复杂的问题。
需要明确的是,我们讨论的是在 Google cloud console(客户端 ID 和客户端密码)上创建的 application credentials
,而不是在 user credentials
(刷新令牌、访问令牌)上创建的用户同意应用程序访问他们的数据。
如果您查看 google 的服务条款,您会注意到其中的内容。
Subject: Changes to the Google APIs Terms of Service
Asking developers to make reasonable efforts to keep their private keys private and not embed them in open source projects.
这也适用于桌面应用程序。例如,您不应在您的应用程序中包含一个设置文件,用户可以以明文形式打开该文件并查看您的客户端 ID 和客户端机密。它应该被编译到您的应用程序中(是的,应用程序可以被反编译并且可以这样使用)或者更好地存储在您的服务器上,以便您的应用程序可以根据需要请求它。但是,如果您的应用程序也设计为离线工作,那么这并不是最佳选择。
Google 意识到在将凭据编译到应用程序方面存在灰色区域。它被认为是可接受的风险。 (几年前我与 Oauth 团队就此进行过一次对话)
为什么要保护您的凭据。
主要问题是,如果有人确实获得了您的客户端 ID 和客户端密码,他们就可以使用它,而 google 无法知道这不是您。更糟糕的是,该应用程序的用户也没有。因此,如果他们开始发送垃圾邮件或泄露数据,那将是您和您的应用程序的罪魁祸首。
以纯文本形式声明 GCP 应用程序授权凭据(即客户端 ID 和客户端密码)是否是一种好的做法?
我一直在使用 C# 开发 Windows 桌面应用程序,其中涉及将文件上传到 Google 云端硬盘。我真正担心的是,当我必须发布该应用程序时,应用程序的 客户端 ID/Client 秘密将被公开,因为我已将它们作为变量存储在应用程序中。安全吗?或者有没有其他更好的方法可以在使用 GCP 授权时将它们存储在您的应用程序中?
OAuth 是关于用户授权应用程序使用他们的资源。如果这是其他人正在使用的将文件发送到他们的 Google 驱动器的应用程序,那么他们应该将他们的 自己的 凭据输入该应用程序。
如果其他人使用该应用程序将文件上传到您的 Google 驱动器,那么由于您描述的原因,OAuth 不是执行此操作的正确方法。相反,您可能需要某种 API 供桌面应用程序调用,它可以隐藏凭据以从 end-user 访问 Google 驱动器。然后,您将有一个不同的身份验证问题,以确保只有您打算打电话给 API 的人会打电话给它。
这真是一个相当复杂的问题。
需要明确的是,我们讨论的是在 Google cloud console(客户端 ID 和客户端密码)上创建的 application credentials
,而不是在 user credentials
(刷新令牌、访问令牌)上创建的用户同意应用程序访问他们的数据。
如果您查看 google 的服务条款,您会注意到其中的内容。
Subject: Changes to the Google APIs Terms of Service
Asking developers to make reasonable efforts to keep their private keys private and not embed them in open source projects.
这也适用于桌面应用程序。例如,您不应在您的应用程序中包含一个设置文件,用户可以以明文形式打开该文件并查看您的客户端 ID 和客户端机密。它应该被编译到您的应用程序中(是的,应用程序可以被反编译并且可以这样使用)或者更好地存储在您的服务器上,以便您的应用程序可以根据需要请求它。但是,如果您的应用程序也设计为离线工作,那么这并不是最佳选择。
Google 意识到在将凭据编译到应用程序方面存在灰色区域。它被认为是可接受的风险。 (几年前我与 Oauth 团队就此进行过一次对话)
为什么要保护您的凭据。
主要问题是,如果有人确实获得了您的客户端 ID 和客户端密码,他们就可以使用它,而 google 无法知道这不是您。更糟糕的是,该应用程序的用户也没有。因此,如果他们开始发送垃圾邮件或泄露数据,那将是您和您的应用程序的罪魁祸首。