您的位置:首页 > 编程语言 > PHP开发

如何处置web系统中的密码

2015-03-13 00:00 211 查看
摘要: 关于web系统中密码的处理。

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

密码的轨迹

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

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

用户 => 应用服务器

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

使用
https


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

加密传输。

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

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

密码的加密一定要单向加密,一方面这样加密不影响使用,另一方面也比可解密的算法破解成本更高,从而提高了安全性。

选择多个语言都可以实现的算法。毕竟web系统基本都是多端的(web,ios,android等),一定要确保所有客户端都可实现才行。

权衡加密成本。如果加密需要额外软件包,从而增加安装包体积和依赖管理复杂度的话,就要根据实际情况有所取舍。

对于JavaScript。推荐:https://github.com/evanvosberg/crypto-js

应用服务器 => 数据库

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

crypt()

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

password_hash

这是PHP 5.5开始增加的密码加密专用函数。如果生产环境已经使用PHP 5.5了,还是推荐使用这个函数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  密码 php