在代码中包含客户端 ID 和客户端密码是否存在安全风险?

Is having the client id and client secret in code a security risk?

我正在使用 google 日历 API 将事件添加到日历。我想知道这是否会是安全问题,因为我在 JS 中使用客户端 ID 和 API 代码,这些代码可能会暴露给使用该应用程序的人? 另外,如果是这种情况,如何保护这些密钥?

PS- 我关注的文档- https://developers.google.com/calendar/quickstart/js

您注意到重定向 uri 了吗?重定向 uri 告诉谷歌身份验证服务器 return 访问令牌的位置。

即使我抢了你的客户ID和客户密码。我无法使用它,因为服务器会将访问令牌发送到重定向 uri 到您的服务器。

这就是您不应将本地主机设置为重定向 uri 的原因。

RFC oauth2 redirection endpoint

After completing its interaction with the resource owner, the authorization server directs the resource owner's user-agent back to the client. The authorization server redirects the user-agent to the client's redirection endpoint previously established with the authorization server during the client registration process or when making the authorization request.

话虽如此,您应该尽量将这些密钥保密,您不应该共享它们或将它们添加到开源项目中。然而,像 javascript 这样的客户端应用程序是一个灰色区域。