0

我正在構建一個Chrome擴展,其功能之一是聯繫我的服務器以在其上存儲消息。只有知道用戶才能做到。Chrome擴展和服務器之間的安全通信

我的問題是,我這樣做的方式不安全。我在我的服務器上有一個數據庫,用於存儲用戶名和加密密碼。

要發送消息到我的服務器,用戶必須每次寫入他的密碼,擴展名不會記住它。如果我使用XMLHttpRequest聯繫我的服務器,我有兩個選擇。 我公司可以派:

myServerDomain + '?message=' + myMessage + '&user=' + myUserName + '&password=' + myPassword 

而且我的服務器上加密密碼,以檢查它是否是好的。

或者,我可以送:

myServerDomain + '?message=' + myMessage + '&user=' + myUserName + '&password=' + myPasswordEncrypted 

,並直接在我的服務器上檢查是否myPasswordEncrypted與一個保存的比賽。

但是,對於這兩種方式,我只需訪問用戶的計算機,檢查谷歌瀏覽器窗口轉到控制檯,然後網絡請求獲取myPasswordEncrypted或myPassword,然後發送我自己修改後的請求。

我該如何保護它?

+0

不要對密碼進行加密,用鹽對它們進行散列並迭代以達到100ms的持續時間。使用諸如password_hash,PBKDF2,Bcrypt和類似函數的函數。請參閱OWASP(Open Web Application Security Project)[密碼存儲備忘單](https://www.owasp.org/index.php/Password_Storage_Cheat_Sheet#Leverage_an_adaptive_one-way_function)。 – zaph

回答

1

如果一個密碼讓你的服務器沒有加密,那麼你做錯了。您絕對必須做的第一件事是確保密碼通過HTTPS發送。之後,你可以將它散列在服務器上。對客戶進行散佈幾乎毫無意義,這是一種可以輕易避開的方法。 See here for more details