繁体   English   中英

可以通过JS伪造身份验证吗? (使用第三方身份验证)

[英]Can authentication via JS be faked? (Using 3rd party Authentication)

我希望使用Twitter Fabric的Digits覆盖Django后端的身份验证。 Digits使您无需密码即可登录,这是手机移动身份验证。

诀窍是,它们为您的前端(JS)提供了一个嵌入窗口小部件。 此小部件可让您发送请求并返回用户是否已通过身份验证。

目前,我有两个将其与Django集成的想法。

  1. 嵌入脚本,等待响应,然后将响应发送到后端。 让后端解析脚本。
  2. 找出端点并从后端ping它们,本质上是用Python重写Fabric的Digits JS函数。

我真的很想做想法1,但是不确定这是否足够安全。 请求的响应可以被欺骗吗? 选项1是否存在漏洞?

选项#1还不够,但是您确实需要将响应发送到服务器,而无需执行#2。

如果您只选择第一个选项,并且不对响应进行任何服务器端验证,则它们可以轻松模拟您将转发给后端的响应。 记住(忽略防火墙),用户可以绕过所有客户端验证,将他们想要的任何内容发送到服务器后端。

您需要做的是通过使用后端的Digits API来验证服务器从前端收到的响应是否有效。 请参阅文档

通过SSL,您可以从Web服务器上使用此响应来安全地请求Digits用户的userID,电话号码和oAuth令牌。 使用这种方法,无需配置OAuth签名,也无需配置和托管Digits的回调URL。

作为其他安全措施,您将需要在Web主机上:

  • 验证oauth_consumer_key标头值是否与您的oauth使用者密钥匹配,以确保用户登录到您的站点
  • 通过解析uri并断言域为api.twitter.com或www.digits.com来验证X-Auth-Service-Provider标头,以确保您调用Twitter。
  • 验证来自verify_credentials调用的响应,以确保用户成功登录

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM