2016-08-02 78 views
0

在我的應用程序中,我包含了來自不同服務器/域的頁面。爲簡單起見,我將參考我的主要應用程序Web A,以及其他Web BCORS跨源資源共享和Json Web令牌

某處我,用戶已登錄後,我將通過使用CORS和JWT加載從的頁面。 在A我創建了一個編碼的令牌,我傳遞給了Ajax。 Ajax將此令牌添加到標題中(「授權」 = 載體+編碼的令牌)。

B然後使用該令牌解碼並獲取usersId和它所屬的組,並確定用戶是否有權訪問資源。 另外還有一個訪問控制允許來源 = Web應用的一種設置幅B裏面,只接受來自A.要求

我的問題是關於CORS的安全部分與使用智威湯遜。 在開發過程中,利用郵差直接訪問資源的時候,我可以easiy旁路訪問控制允許來源。 只要我有正確的標記,就可以毫無問題地發回資源!我的意思是隻需要一些潛在的黑客掌握該編碼字符串,並且他們可以輕鬆使用郵遞員查看資源。

當涉及到安全部分時,下一步是什麼,因爲我完全失去了!

希望我明確解釋了這個問題。高度讚賞所有幫助

+0

你有沒有想過這個?我目前想要做類似於你的事情。我想創建一個客戶可以在其網站上使用的小部件。我只希望在我的網站上創建帳戶的客戶能夠使用返回小部件的api。 – WBuck

回答

1

這是完全正確的。 CORS的存在是爲了確保用戶在其瀏覽器中的安全。直接瀏覽網站B或捲曲不受CORS保護。服務器可能會從各種客戶端獲得任何類型的請求,並且必須保護自己。

B站點的安全來自正確使用JWT(最好是通過HTTPS)。首先,令牌用祕密簽名。這讓你知道別人沒有改變它或自己創建一個。其次,有效載荷應該包括相對較短的到期時間。在這段時間之後,令牌的接收者應該忽略它,這樣一個持有該令牌的中間人可以用很短的時間來使用它。第三,如果您只通過HTTPS傳遞令牌,那麼您的任何其他人都會得到它的機會很低。

3

CORS並不意味着保護你在攻擊者獲取用戶的智威湯遜訪問令牌和直接從網絡B.請求資源的情況下

實際上,CORS是不是安全功能可言,而是一種安全地繞過瀏覽器的同源策略(安全功能)的方法。同源策略(基本上每個瀏覽器都實現)限制網頁從不同來源訪問網頁上的數據。

想象一下瀏覽器沒有實現同源策略的情況。任何網頁都可以從任何來源請求數據,這意味着任何惡意網站都可以向銀行,電子郵件帳戶或其他任何地方請求數據。這個瀏覽器會高興地發送與這些源相關的任何HTTP cookie,並且所有這些請求都將被授權。對這個瀏覽器的攻擊是微不足道的。

因此,很明顯,任何瀏覽器都需要同源策略。但是,正如您發現的那樣,網站通常在分享原始數據時非常有用。這就是創建CORS規範的原因。只要雙方同意跨數據源共享數據,瀏覽器將允許發送請求。

要回答您的真實問題,防止攻擊者直接使用JWT的方法是不允許他們首先訪問它。您應該像使用HTTP會話cookie或密碼一樣保護JWT,因爲這就是它的原因。

+0

感謝您的評論,並幫助Micheal Davis和@MattS。 目前我在Ajax中使用這個承載令牌,因此編碼令牌在瀏覽器的開發工具中可見。 是否保護JWT會將其傳遞到其他地方的標題,而不是在Ajax調用中?所以,以後通過使用HTTPS,讓它更難獲得令牌? –