2014-03-06 46 views
1

我有一個表單,用戶可以更改密碼並將其存儲在SQL數據庫中。在表單提交時,頁面通過POST提交給自己。 我的問題是,是最好加密客戶端(JavaScript)或服務器端(PHP),或兩者的密碼字段?什麼時候最好加密一個變量?

+1

如果使用https傳輸數據,那麼服務器端加密將是足夠的 –

+1

你是不是意味着哈希沒有加密和是SERVERSIDE,並通過SSL發佈 – 2014-03-06 02:20:08

回答

1

您的表格提交應通過SSL。如果你這樣做,那麼就不需要在客戶端進行加密,因爲SSL將保護它在傳輸過程中。

在服務器上,您需要爲存儲密碼的方式制定一般安全策略。存儲它們的一個好方法是僅存儲某種安全散列,並且不存儲實際的密碼。當要檢查密碼時,它會在SSL下發送到服務器,然後在服務器上對其進行散列並與存儲在數據庫中的安全散列進行比較。如果它們匹配,則驗證密碼檢查。這意味着即使您的數據庫受到損害,也不會有實際的密碼被盜用。

您可以在將實際密碼存儲在數據庫中之前使用加密,但這需要保持加密方法/密鑰的安全,以便可能闖入您的數據庫的黑客無法解密密碼。雖然這可以是「安全」的時候,但是它有更多的潛在漏洞,而不僅僅是存儲散列,並且從不存儲實際的密碼,並且也可以被有權訪問數據庫和加密方法/密鑰的員工從內部泄露誰可以竊取密碼。

+0

感謝您爲我闡明瞭一些光。我開始閱讀安全知識,並且有很多比眼睛哈哈! –

相關問題