系統設計登陸頁面的時候,需要謹慎。因為登陸數據是在網絡上進行傳輸,很可能中途被攔截。
最好的登陸是使用https,這樣網絡傳輸是安全的。google,baidu,alibaba都使用https的方式。
但一般的企業網站,不一定會去部署https。因此我們要考慮在傳輸過程中加密,避免登錄數據太容易被他人破解。
用戶在輸入用戶名,密碼,點擊登錄,在提交數據前,我們應該考慮使用js對password進行加密(例如base64,hash等)。這樣在網絡上傳輸的是加密后的密碼,給攔截者的破解工作帶來一定難度。
示例代碼:
<script type="text/javascript">
$(document).ready(function() {
$('#formlogin').submit(function(){
var password=$('#passwordId').val();
var encryptedPW = Base64.encode(password);
$('#passwordId').val(encryptedPW);
return true;
});
});
</script>
但以上這種只是簡單的加密。
更完美點的方案是使用AES(Advanced Encryption Standard)方式進行加密。每次登錄前,從服務器請求一個隨機的key,把這個key當做AES的密鑰,產生加密后的字符串。這樣能夠大大提高登陸的安全性。
不過也帶來一個問題,需要js和java支持相同加解密功能的函數。這說起來很簡單,大家自己真正開發的時候才知道想要js和java兼容相同的加解密函數並不容易。js的跨瀏覽器支持、編碼、java反解密、session問題,沒有幾天的調試是做不好的。
有興趣者可以研究以下js類庫。