zoukankan      html  css  js  c++  java
  • 解决用户登录、注册传输中账号密码的安全泄露问题

    方案是:HASH + Salt

    HASH + Salt 的操作也称为两次 HASH,其原理是:第一次 HASH 操作进行身份的初次鉴权,网站会返回一个随机数(Salt,盐值),客户端通过服务器返回的随机数以及协商好的规则进行第二次 HASH 操作,将操作结果发送给服务器,服务器也通过相同的方法进行操作,如果两次结果相同,那么就鉴权成功。

    此种方式下,服务器也不存储明文密码,存储的是密码第一次 HASH 后的结果。即使该值被泄露,也不会泄露明文密码。

    发起两次请求

    1、明文传输用户名 例如:caoke

    不存在-》登录失败

    存在-》返回用户名的hash值。例如:1eea229fd1ea8ac0

    2、对"用户名的hash值+密码"进行md5,产生hash,明文传输用户名、密码hash值。例如:md5("1eea229fd1ea8ac"+"123456") =838cfa0690f2198b

    后端对用户名、密码hash进行比对

    存在-》登录成功 

    不存在-》密码错误

    传输过程中只会泄露:caoke、838cfa0690f2198b、838cfa0690f2198b,而不会泄露密码123456

    注册过程也是这个方案

    另一种方案

    博客园用的是rsa的方式对用户名、密码加密传输,这也是一种方式 ,具体可以看看encryptjs库,前端传入公钥,加密,然后传输给服务器,服务器用私钥解密。

     

  • 相关阅读:
    boost::asio中的implementation_type介绍
    boost::asio::io_service::run学习笔记
    vim使用笔记
    进程、线程运行状态查看包括线程在cpu上运行情况
    c++自旋锁——学习笔记
    grep搜索过滤指定目录
    /usr/bin/ld: cannot find -lstdc++ -lz问题
    linux下条件变量使用笔记
    map使用笔记
    关于友元函数在类内定义的问题--笔记
  • 原文地址:https://www.cnblogs.com/caoke/p/10906786.html
Copyright © 2011-2022 走看看