当前位置:   article > 正文

【前端安全】密码安全_密钥放在前台页面安全吗

密钥放在前台页面安全吗

密码安全

密码的作用:
证明你是你

密码-对比

存储的密码 <----对比----->输入的密码

只有用户知道,密码是一定要私密的,密码的作用就是对比

密码-泄露渠道

  • 数据库被偷
  • 服务器被入侵
  • 通讯被窃听
  • 内部人员泄露数据
  • 其他网站(撞库)

密码-存储

  • 严禁明文存储(防泄露)
  • 单向变换(防泄漏)
  • 变换复杂度要求(防猜解)
  • 密码复杂度要求(防猜解)
  • 加盐(防猜解)

密码是可以通过哈希算法(信息摘要算法)进行加密

  • 明文-密码 一一对应
  • 雪崩效应:一个字符不一样 密文就完全不一样
  • 密文-明文 无法反推
  • 密文固定长度
  • 常见的哈希算法: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;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
var salt = password.getSalt();
var newPassword = password.encryptPassword(salt, user.password);
  • 1
  • 2

密码 - 密码传输的安全性

  • https传输
  • 频率限制
  • 前端加密意义有限

频率限制 防止多次尝试密码

传输层窃听 明文密码

密码 - 生物特征密码

  • 指纹
  • 声纹
  • 虹膜

  • 私密性 - 容易泄露
  • 安全性 - 碰撞
  • 唯一性 - 终身唯一 无法修改
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/550971
推荐阅读
相关标签
  

闽ICP备14008679号