设计安全的表单登录

作者:vkvi 来源:ITPOW(原创) 日期:2008-5-16

我们平常的站点登录都是没有进行加密的,也就是说你的用户名和密码是非常容易被窃取的。

有些商业站点为了保护用户的安全采用了 SSL、客户端证书等,但对于一般的站点完全没有必要作如此大的投资,只需要利用一些技巧。

我们的原理是:

  • 浏览器端向服务器端请求打开登录页面时,服务器端生成一个随机的安全码保存在 Session 中,并且把该安全码写入登录页面的 hidden 元素中。
  • 浏览器端在提交前一刻,利用 JavaScript 把用户的密码利用 MD5 加密,再把加密后的字符串与 hidden 元素中的安全码相连,把相连的结果再进行一次 MD5 加密,然后把最终的加密内容发送到服务器端。服务器端按照相同的过程加密,再与提交值比较,就可以判断是否登录成功了。注意:判断之后要清除 Session 中的安全码。为什么在浏览器端不把明文密码和安全码相连之后进行 MD5 加密呢,这是由于大多数数据库中存的都是 MD5 加密之后的密码,而不是明文,所以这样的话,服务器端无法重复浏览器端的数据。
  • 因为 MD5 是不可逆的,所以窃听者无法获取密码的明文;又因为使用了随机的安全码,窃听者无法实施回放攻击。

相关阅读

相关文章