如何验证请求来自您网站上的脚本?

时间:2012-06-19 12:38:54

标签: javascript facebook security facebook-login

我目前正在实施Javascript Facebook登录API。

根据Facebook的回调响应,此客户端脚本然后将包含查询字符串参数的请求发送到我们网站上的URL。根据该URL中的电子邮件,客户端已通过身份验证。

这不安全。没有其他我们可以验证的令牌从Facebook返回(据我所知),我们应该根据查询字符串参数中的电子邮件登录用户,而不是密码。

我想添加另一个查询字符串参数,它可以保证查询字符串数据来自Facebook重定向后的JavaScript重定向。

我认为这应该是客户端脚本创建的某种散列值,我可以与服务器端进行比较。但是,用于创建此密钥的每个资源都可供攻击者,客户端cookie或检查客户端脚本使用。

我可以使用常见且安全的方法解决这个问题吗?

3 个答案:

答案 0 :(得分:1)

Facebook显然使用了OAuth。如果没有太多详细信息(您可以在相关的OAuth和FB文档中找到),OAuth将在您的服务器和服务提供商(在本例中为Facebook)之间共享秘密,这绝不是透露到前端Javascript,用于确认您收到的回叫是否是真实的。

答案 1 :(得分:0)

每次验证用户时,都会向Facebook传递一个唯一的回调网址。

此URL应包含一些安全令牌,如果存在,将识别登录尝试的真实性。

答案 2 :(得分:0)

您可以在对Facebook的请求中添加state变量。这将由Facebook返回给您以验证您的请求。

https://developers.facebook.com/docs/reference/dialogs/oauth/