2016-02-08 59 views
1

我有一個正常工作的WebAPI應用程序。登錄,註冊等都沒有問題。但是,我遇到了一些需要注意的問題。當有人註冊或記錄時,他們的密碼以純文本形式發送。我知道我們可以應用HTTPS證書,這將得到解決。但是,我更加尋求一種解決方法,我可以散列密碼,WebAPI可以自動將其提取出來。我不打算修改內置的WebAPI功能來散列和存儲PW。這也是爲了確保當我使用FF或Chrome開發者工具時,沒有人可以從正在發送的數據中讀取PW。向WebAPI發送哈希密碼

我正在使用Angular或JQuery AJAX來調用我的WebAPI。

+1

任何雙向加密都可以撤銷,並且首先不是很安全。您應該真正使用SSL來傳輸用戶帳戶數據。 –

+0

發送哈希密碼並沒有太大好處;散列本身成爲有效的密碼。 – SLaks

+0

如果攻擊者可以在客戶端的頁面上使用devtools,那麼你已經丟失了。 – SLaks

回答

0

可以對前端的密碼進行加密,並將哈希密碼和salt + rounds(使用時)發送到服務器。

用戶嘗試登錄時出現問題,您需要將salt和roundings發送到前端,將其密碼(輸入的內容)發送到服務器,然後執行比較,如hashedPassword == hashedPassword並返回真假。

所以在我看來,這比在服務器端做所有事情都不太安全。唯一的好處是,沒有人可以在開發工具或有效載荷中看到您的密碼。

+0

感謝您的解釋。我更多地尋找一種方法,無需更改WebAPI的內置代碼以散列和存儲在數據庫中。我嘗試了幾種JavaScripts散列方法,如SHA1和md5,它們成功地散列了pw,但它沒有通過WebAPI進行驗證。 – programmerboy

+0

我假設你使用ASP Identity 2.0(或其他用戶管理框架)。在那裏,你必須設置一個選項,在密碼不在服務器端進行散列處理(因爲它已經被散列)。所以這只是配置,而不是覆蓋代碼。 – kadoga

+0

謝謝@卡多加。我會看看這個選項。順便說一句,我是否需要爲我的WebAPI分配一個SSL證書,或者我的API的每個用戶都需要爲他們自己的站點分配一個證書,以發送加密信息(我猜測後者)。 – programmerboy