如何验证请求是否来自您网站上的脚本
How to verify that a request came from a script on your site?
我目前正在实现Javascript Facebook登录API。
然后,根据来自 Facebook 的回调响应,此客户端脚本将带有查询字符串参数的请求发送到我们网站上的 URL。根据该 URL 中的电子邮件,对客户端进行身份验证。
这是不安全的。据我所知,Facebook没有返回我们可以验证的其他令牌,并且我们希望根据查询字符串参数中的电子邮件登录用户,并且没有密码。
我想添加另一个查询字符串参数,它为我们提供了某种保证,即查询字符串数据来自 Facebook 响应后的 JavaScript 重定向。
我认为这应该是由客户端脚本创建的某种哈希值,我可以将其与服务器端进行比较。但是,用于创建此密钥的每个资源都可以通过客户端 cookie 或检查客户端脚本提供给攻击者。
是否有一种通用且安全的方法可以解决此问题?
Facebook显然使用OAuth。在不涉及太多细节的情况下(您可以在相关的OAuth和FB文档中找到),OAuth使用您的服务器和服务提供商(在本例中为Facebook)之间共享的秘密进行操作,该秘密永远不会透露给前端Javascript,并用于确认您收到的回调是否真实。
每次对用户进行身份验证时,向 Facebook 传递一个唯一的回调 URL。
此 URL 应包含一些安全令牌,如果存在,该令牌将标识登录尝试的真实性。
您可以在向 Facebook 发送的请求中添加state
变量。这将由Facebook返回给您,以验证您的请求。
https://developers.facebook.com/docs/reference/dialogs/oauth/
- 需要使用谷歌应用程序脚本列出谷歌域下的所有网站
- 从应用程序脚本检查谷歌网站访问权限
- java脚本网站最佳实践
- 如何获取使用我们的脚本或web应用程序的网站名称
- 替换字符串的脚本;在某些网站上不起作用
- Disqus的计数.js脚本在索引中无法正常运行.html与react.js网站
- 我是否应该在网站的每个页面上都包含 Google 地图脚本标签
- 如何创建一个脚本,该脚本给定网站列表,它使用其搜索功能来获取信息
- 运行 python 脚本并在网站上显示打印值
- 创建一个本地脚本来操作网站中的DOM元素
- 这个脚本的作用是什么?(西部数字网站的一部分)
- 谷歌脚本-从网站论坛解析HTML-并将数据写入工作表
- Casperjs-登录https网站的脚本出错
- 如何使用脚本将twitter登录集成到我的网站
- 从网站中删除文本选择限制的脚本
- Chrome扩展:在后台页面和网站页面脚本之间进行通信的最佳方法
- 如何最好地将跟踪脚本添加到您的网站
- 压缩脚本和样式,并将所有js和样式引用合并为单个引用,以优化网站性能
- Date()在网站脚本中不考虑夏令时,但在Firefox控制台中执行时可以
- 如何使用Selenium执行网站脚本中定义的JavaScript函数