2014-12-05 71 views
0

我有一個應用程序,我使用JavaScript登錄。通過身份驗證後,服務器向我發送一個令牌,我必須向每個向服務器發出的ajax請求附加一個令牌,以便服務器知道我有資格索要信息。但是,我的應用程序不是單頁應用程序,這意味着點擊鏈接後,頁面會重新加載,我需要重新進行身份驗證。在javascript中存儲憑證式信息

是否可以安全地保存令牌並在頁面重新加載後再次訪問?

我想過的選項是將它保存在cookie或本地/會話存儲中,但是,我不確定這些選項是否足夠安全。

您是否知道在客戶端保存令牌的其他更安全的方法?或者你是否知道我提到的選項是否足夠安全以存儲這樣敏感的信息?

感謝您的任何建議。

編輯:我無法更改服務器端應用程序,令牌必須存儲在客戶端上。

回答

0

當您認爲令牌是保密的,那麼您不應該考慮將其保存在客戶端。

即使您在某種情況下想要在客戶端保存這樣的機密信息,那麼您提到的內容也是正確的(Cookie,本地/會話存儲)。在保存之前加密您的令牌。

本地存儲: 它正在您的域名下保存數據。沒有其他域沒有訪問您的信息的本地存儲信息。

請糾正我,如果我錯了,接受它,如果我是正確的。

1

本地存儲:不是保護機密/敏感信息的安全方式。

Cookies:那麼寫了很多關於竊取cookie和防止跨站點腳本的文章。

會話存儲:是安全但問題是,你正在使用服務器端的哪種技術。 它是NodeJS還是PHP或其他?

我已經使用NodeJS和PHP進行身份驗證。

使用Express.js您可以爲每個用戶維護一個會話,並在每個請求/頁面加載時檢查/驗證,並驗證它是否是有效的用戶/請求。 它還提供了一個活動的會話檢查,即,如果用戶有時不活動,會話將自動銷燬/清除/清理。

除了passport.js,你也可以實現這一點,但它取決於你的要求。

入住這LINK

+0

在服務器端,它是微軟編寫的應用程序,我沒有訪問二進制文件,所以改變了服務器端是不是一種選擇。我必須將令牌存儲在客戶端。 – leopik 2014-12-05 10:02:42

+0

我還有另外一個選擇,但我不知道它是否安全。 我已經創建了一個''元素,並將此元素添加到文檔中的任何位置。 現在我可以相應地訪問/修改/更新。 – 2014-12-05 18:12:21