簡體   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