Foursquare API 在 javascript 中公开秘密
Foursquare API exposing secret in javascript
我想在我的网站中集成 foursquare API,但我对 API 安全性不是很熟悉,所以我想确保我做的是正确的。
我想搜索文档所述区域中的场地:
https://api.foursquare.com/v2/venues/search
?client_id=CLIENT_ID
&client_secret=CLIENT_SECRET
&v=20130815
&ll=40.7,-74
&query=sushi
然而,使用 javascript,我对这样在我的代码中公开客户端机密感到不舒服,因为如果有人查看我的源代码,他们会看到 client_id 和 client_secret 这使得使用我的代码验证自己成为可能:
https://developer.foursquare.com/overview/auth
这不是一样吗,"hey look at my source code, my username = "someusername" 而我的密码是 "somepassword"?
"client_secret" 不应该像它说的那样保密吗?还是我看错了?
我认为问题在于您正在尝试使用 Javascript 访问 Foursquare API,它是在客户端执行的,所以是的,任何使用您网站的人都可以使用稍微调查一下,看看你正在使用的密钥,这是你绝对不想做的事情。
解决这个问题的方法是不使用在客户端执行的代码访问 API。无论您在服务器端使用何种语言构建网站,都应该是访问 API(使用您设置的身份验证凭据)然后 returns API 结果的代码调用其余代码。
或者,您可以让用户使用 Foursquare 进行身份验证并获取访问令牌,然后您可以在特定于用户的 API 调用中使用该令牌,如果这些调用是在客户端上执行的,则无关紧要边。我认为这是使用该方法的文档中的相关页面:https://developer.foursquare.com/overview/auth#access
我想在我的网站中集成 foursquare API,但我对 API 安全性不是很熟悉,所以我想确保我做的是正确的。
我想搜索文档所述区域中的场地:
https://api.foursquare.com/v2/venues/search
?client_id=CLIENT_ID
&client_secret=CLIENT_SECRET
&v=20130815
&ll=40.7,-74
&query=sushi
然而,使用 javascript,我对这样在我的代码中公开客户端机密感到不舒服,因为如果有人查看我的源代码,他们会看到 client_id 和 client_secret 这使得使用我的代码验证自己成为可能:
https://developer.foursquare.com/overview/auth
这不是一样吗,"hey look at my source code, my username = "someusername" 而我的密码是 "somepassword"?
"client_secret" 不应该像它说的那样保密吗?还是我看错了?
我认为问题在于您正在尝试使用 Javascript 访问 Foursquare API,它是在客户端执行的,所以是的,任何使用您网站的人都可以使用稍微调查一下,看看你正在使用的密钥,这是你绝对不想做的事情。
解决这个问题的方法是不使用在客户端执行的代码访问 API。无论您在服务器端使用何种语言构建网站,都应该是访问 API(使用您设置的身份验证凭据)然后 returns API 结果的代码调用其余代码。
或者,您可以让用户使用 Foursquare 进行身份验证并获取访问令牌,然后您可以在特定于用户的 API 调用中使用该令牌,如果这些调用是在客户端上执行的,则无关紧要边。我认为这是使用该方法的文档中的相关页面:https://developer.foursquare.com/overview/auth#access