【前端安全】密码安全
2019-04-08 09:09
429 查看
密码安全
密码的作用:
证明你是你
密码-对比
存储的密码 <----对比----->输入的密码
只有用户知道,密码是一定要私密的,密码的作用就是对比
密码-泄露渠道
- 数据库被偷
- 服务器被入侵
- 通讯被窃听
- 内部人员泄露数据
- 其他网站(撞库)
密码-存储
- 严禁明文存储(防泄露)
- 单向变换(防泄漏)
- 变换复杂度要求(防猜解)
- 密码复杂度要求(防猜解)
- 加盐(防猜解)
密码是可以通过哈希算法(信息摘要算法)进行加密
- 明文-密码 一一对应
- 雪崩效应:一个字符不一样 密文就完全不一样
- 密文-明文 无法反推
- 密文固定长度
- 常见的哈希算法:md5,sha1.sha256
密码-md5单向变换
没法逆推,但是可以通过查表得知
密码-单向变换彩虹表
这里是只进行了一次md5加密,我们可以通过加载变化的复杂度。
- md5(明文) = 密文
- md5((明文)) = 密文
- md5(sha1(明文)) = 密文
- md5(sha256(sha1(明文))) = 密文
通过复杂的密码来对抗彩虹表,一般来说彩虹表收录的都是比较简单的。
密码-加盐
原始密码+盐再变化生成新的密码
md5(sha1(md5(ID+fsdjks+原始密码+fsdf+盐)))
- 密码的变换次数越多越安全
- 加密成本几乎不变(生成密码时的速度慢一些)
- 彩虹表失效(数量太多,无法建立通用性)
- 解密成本增大N倍。
var password = {}; var md5 = function (str) { var crypto = require('crypto'); var md5Hash = crypto.createHash('md5'); md5Hash.update(str); return md5Hash.digest('hex'); } password.getSalt = function() { return md5(Math.random()*999999 + '' + new Date().getTime()); } password.encryptPassword = function(salt, password) { return md5(salt + 'sfdhjkhjkf23@#' + password); } module.exports = password;
var salt = password.getSalt(); var newPassword = password.encryptPassword(salt, user.password);
密码 - 密码传输的安全性
- https传输
- 频率限制
- 前端加密意义有限
频率限制 防止多次尝试密码
传输层窃听 明文密码
密码 - 生物特征密码
- 指纹
- 声纹
- 虹膜
- 私密性 - 容易泄露
- 安全性 - 碰撞
- 唯一性 - 终身唯一 无法修改
相关文章推荐
- 【网络安全】关于前端js密码控件安全性摘录(坑待填)
- 登录注册系统,前端密码安全解决方案
- [信息安全] 2.密码工具箱(续)
- MySQL 5.6 如何更改安全的处理密码探讨
- 十个常用网络密码的安全保护措施
- 通过OWA修改密码,提示您输入的密码不符合最低安全要求
- 《Spring Security3》第四章第三部分翻译上(配置安全的密码)
- 认识前端安全
- redis密码设置、访问权限控制等安全设置
- SharePoint 服务器修改密码(前端服务器与数据库服务器分开)
- 你的密码究竟有多安全?
- 最不安全的6款密码,你中招了么?
- 密码字段出现在一个不安全的 http:// 页面中。这是一个可能导致用户登录凭据被窃取的安全风险。
- 局域网内部安全测试--------利用弱密码控制远程计算机
- 登录时前端用户名和密码为空时提示
- DotNET密码系统之一的DES对称加密算法保证数据安全
- WCF 安全之自定义的用户名/密码身份验证
- 前端安全之XSS攻击
- Cisco设备安全密码安全 推荐
- 安全新兵营第五天:密码提问