2014-06-23 121 views
2

我有點不清楚如何使用純JavaScript應用程序時,確保(或保護)承載令牌。保護的OAuth承載令牌

我知道,當用戶請求令牌到服務器時,它可以拿出14天或24小時的有效性。但是一旦用戶擁有令牌,就沒有整齊的(有保證的)方法來保護XSS或CSRF攻擊(我錯過了什麼?)。

現在讓我們說用戶登錄到Web應用程序和瀏覽器具有此令牌,該令牌的有效期爲14天。如果用戶正在訪問另一個試圖執行XSS(或CSRF)的Web應用程序,那麼該令牌會暴露給第三方應用程序,並且此應用程序可以使用此令牌調用我的應用程序(?)

我有試圖在網上搜索,但沒有具體的東西(或容易理解的東西)來爲純js應用程序和如何保護令牌。或者在js atm中沒有一個好的方法來做到這一點。你只希望(並祈禱)攻擊不會發生在令牌的有效期內(即14天:|)?

任何想法或輸入,歡迎這一點。

謝謝

編輯:它prob。不言而喻,但我們假設使用SSL證書。

+0

我想你需要了解什麼[CSRF](https://www.owasp .org/index.php/Cross-Site_Request_Forgery_(CSRF))和[XSS](https://www.owasp.org/index.php/Cross-site_Scripting_(XSS))攻擊是在您開始嘗試保護您的從他們申請。 – SilverlightFox

回答

0

因此,一個非常快速的總結。發生CSRF是因爲對HTTP端點的請求會自動包含Cookie(應該如此)以及服務器所描述的必需標題,並且不需要用戶在物理上做某些事情。他們只需訪問帶有CSRF向量的網頁即可。

CSRF一般認爲是可能的,如果是沒有用的,首先傳遞給客戶端,並返回到服務器,以驗證用戶確實打算撥打電話一個獨特的「祕密」。一般來說,網絡瀏覽器正在形成防止任何類型應用程序的CSRF的主要方式。 CSRF on OWASP

正如您已經指出的那樣,您使用不記名標記(作爲HTTP標頭髮送) - 但您仍然受到保護,因爲請求需要在默認情況下從同一個來源發起。如果服務器允許來自HTTP標頭(它告訴你的用戶的網頁瀏覽器是否允許)的所有來源的呼叫,那麼他們的頭像是Same origin policy here

至於XSS,只要你的cookies起碼有「HTTP」標誌,他們是不可見的任何頁面上的JavaScript代碼,用戶訪問反正。另外,嚴格來說,包括爲您的網站竊取cookie的XSS載體將需要在您的網站上進行一般性說明。除了用戶身在你的網站上之外,我無法想象如何竊取他們。如果您設置了「安全」標誌,則它會更好,因爲它只會強制「服務器」,並確保只有在建立TLS/SSL連接時纔會發送Cookie。 XSS on OWASP

這裏是安全和HTTP標誌上市餅乾截圖: A mixture of cookies - some cookies need to be accessed by javascript though like google trackers!

作爲一個額外的,請確保你總是強制TLS連接,否則它們可能會成爲犧牲品的MITM(中間人)攻擊公共WIFI網絡,迫使協議降級爲易受POODLE影響的非SSL版本。請閱讀HSTS,因爲它絕對會加強我所提到的一切,真的有助於防止令牌被盜。HSTS OWASPHSTS info wikipedia