首页 > Web开发 > 详细

如何处置web系统中的密码

时间:2015-03-13 19:12:10      阅读:218      评论:0      收藏:0      [点我收藏+]

密码,是敏感又重要的信息。对密码的处理是非常重要的。那么在web系统该如何处理密码呢?在下略有心得,备忘如下。

密码的轨迹

用户 => 应用服务器 => 数据库

从用户在客户端/浏览器输入密码到传输到应用服务器,再存储到数据库。有很多措施可以用来提高密码的安全性。

用户 => 应用服务器

用户的原始密码经过http协议传输到应用服务器。

  • 使用https

    虽然前段时间出现心血漏洞,但是并不能说https就没用了。

  • 加密传输。

    对原始密码进行单项加密可以有效提高破解成本,甚至完全杜绝渗透者获得用户的原始密码。虽然对于抓包者来说,仍然可以获得登录令牌,但至少他无法获得用户原始密码,不会把用户密码扔到社工字典里。很大程度上减少了密码泄露的损失。

    密码加密有几点需要注意:

    1. 密码的加密一定要单向加密,一方面这样加密不影响使用,另一方面也比可解密的算法破解成本更高,从而提高了安全性。
    2. 选择多个语言都可以实现的算法。毕竟web系统基本都是多端的(web,ios,android等),一定要确保所有客户端都可实现才行。
    3. 权衡加密成本。如果加密需要额外软件包,从而增加安装包体积和依赖管理复杂度的话,就要根据实际情况有所取舍。
    4. 对于JavaScript。推荐:https://github.com/evanvosberg/crypto-js

应用服务器 => 数据库

服务器到数据库这一关也同样需要加密。当然,仍然是单向加密。这样,即使数据库被爆也至少不会让用户密码公之于众。 这里就PHP语言推荐两个函数:

  • crypt()

    这个函数比较奇妙,它会根据加的盐不同而使用不同的加密算法。这对破解者来说着实是个噩梦,不仅要破解算法,还要破解盐。

  • password_hash

    这是PHP 5.5开始增加的密码加密专用函数。如果生产环境已经使用PHP 5.5了,还是推荐使用这个函数。

如何处置web系统中的密码

原文:http://my.oschina.net/liuxd/blog/386735

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!