2016-02-10 69 views
3

我已經與智威湯遜曾在移動應用程序,但我會實現它的第一次的認證網站上,我有我還是沒明白一件小事:智威湯遜+餅乾+ HTTPS + CSRF

  • 如果我使用JWT令牌與本地存儲,XSS攻擊是可能的
  • 如果我使用JWT令牌與餅乾,CRSF攻擊是可能的

...,但如果我用JWT令牌通過HTTPS與僅Http +安全的cookie和一個月的令牌生命週期,CSRF攻擊仍然可能在這個c Ase?

我看到整個網絡上的自定義標記與cookie或自定義標記與localStorage或JWT,但我沒有明確得到httpOnly +安全cookie + JWT + HTTPS + CSRF的需要的答案。

回答

1

如果您使用JWT作爲身份驗證令牌,則應該將其存儲爲標記爲httpOnlysecure的Cookie,以適用於使用本地/會話存儲。正如你所提到的,這可以防止XSS攻擊,我們擔心惡意JavaScript會被注入到我們的頁面並竊取我們的會話令牌。

  • 標記爲httpOnly的cookie不能被JavaScript讀取,因此在XSS攻擊中不會被盜取。
  • 但是,本地/會話存儲可以通過JavaScript讀取,因此將會話令牌放在那裏會使其容易受到XSS攻擊。

但是,使會話令牌Cookie httpOnlysecure仍然使您容易受到CSRF攻擊。爲了明白爲什麼,請記住,cookie標記了源自它們的域,並且瀏覽器僅發送與請求所在的域匹配的cookie,發送給(獨立於發送請求的頁面域) 。例如,假設我在一個選項卡中登錄了stackoverflow.com,在另一個選項卡中登錄到evil.com。如果evil.com對ajax調用stackoverflow.com/delete-my-account,我的stackoverflow認證令牌cookie將被髮送到stackoverflow服務器。除非該終端防護CSRF,否則我的帳戶將被刪除。

有一些防止CSRF攻擊的技術。我建議閱讀this OWASP page關於CSRF攻擊和預防。

+0

嗨,非常感謝您的回答。在閱讀您分享的文章後,我會實施CSRF預防。 – Alex