使用客户端Javascript时如何保持API密钥的秘密?

时间:2011-10-21 08:55:25

标签: javascript authentication client-side

例如,请查看此Facebook插件。

在客户端,API密钥清晰可见。什么阻止其他用户获取此密钥并在其他网站上使用此功能?

我认为一个非常天真的实现方法是检查请求来自哪个域,但这样的事情很容易被伪造。

如果我要创建类似的东西,我将如何保护身份验证过程?

我希望尽可能多地使用某种形式的服务器身份验证来完成这项工作。任何链接或建议将不胜感激。

更新

我发现有用的API密钥类似question

2 个答案:

答案 0 :(得分:12)

用三个词来说:服务器端验证。当您使用对于给定站点不正确的密钥时,FB本身将抛出错误。 API密钥不应该是秘密的(而不是秘密密钥)。

答案 1 :(得分:3)

我自己没有这样做,但我知道您担心的攻击类型称为跨站点请求伪造(CSRF)。 Wikipedia article上提供了一些关于如何防止它的提示。