我目前正在实施Javascript Facebook登录API。
根据Facebook的回调响应,此客户端脚本然后将包含查询字符串参数的请求发送到我们网站上的URL。根据该URL中的电子邮件,客户端已通过身份验证。
这不安全。没有其他我们可以验证的令牌从Facebook返回(据我所知),我们应该根据查询字符串参数中的电子邮件登录用户,而不是密码。
我想添加另一个查询字符串参数,它可以保证查询字符串数据来自Facebook重定向后的JavaScript重定向。
我认为这应该是客户端脚本创建的某种散列值,我可以与服务器端进行比较。但是,用于创建此密钥的每个资源都可供攻击者,客户端cookie或检查客户端脚本使用。
我可以使用常见且安全的方法解决这个问题吗?
答案 0 :(得分:1)
答案 1 :(得分:0)
每次验证用户时,都会向Facebook传递一个唯一的回调网址。
此URL应包含一些安全令牌,如果存在,将识别登录尝试的真实性。
答案 2 :(得分:0)
您可以在对Facebook的请求中添加state
变量。这将由Facebook返回给您以验证您的请求。
https://developers.facebook.com/docs/reference/dialogs/oauth/