文章目录

  • 一、安全传输
    • 1.1、http和https
    • 1.2、非对称加密优化
  • 二、安全输入
  • 三、安全存储
    • 3.1、 明文传输
    • 3.2、MD5保存
    • 3.3、 MD5+盐值
    • 3.4、bcrypt
  • 结论

鉴于社工库层出不穷,多种多样收集用户信息的方式。前几日,我还发现,我之前用过的QQ密码,竟然明文存在一个信息查询系统中。为此感到很是震惊。闲来无事,思考一个问题,作为开发人员,如何安全的保存用户的密码呢? 带着问题,探讨下密码如何更加安全的保存,此,为笔者目前经验而已,菜鸟一个,有更好的想法,希望可以分享给我。

一、安全传输

1.1、http和https

HTTP 在传输数据的过程中,所有的数据都是明文传输,自然没有安全性可言,特别是一些敏感数据,比如用户密码和信用卡信息等,一旦被第三方获取,后果不堪设想。

HTTPS可以理解为HTTP+SSL/TLS, 即 HTTP 下加入 SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL,用于安全的 HTTP 数据传输。

如果要做到密码的安全传输,使用https协议是必不可少的。但是https无法做到绝对的安全。因此,很多开发者都会在https协议之上再进行一次私有的加密。拿登录场景为例,常见的有单项加密(MD5 HASH)和非对称机密比较常见。一般小公司会直接MD5传输。但是在一下大厂,支付宝、腾讯、爱奇艺等这些网站并没有直接通过MD5进行传输,为什么呢?

1.2、非对称加密优化

在各个大厂的登录请求,一个登录请求乱七八糟的,各种字段,各种信息的传输,有的登录都无法直接定位到密码是由哪个字段传输,但是不管其登录多乱,大部分情况会在登录的Ajax的附近找到一个公钥,就肯定是非对称加密了。

为什么现在很多人使用了非对称加密呢?因为只要保证私钥不泄露。那么在传输过程中,通过加密的账号密码是很难破解的。 而且随着社会发展,很多平台都在使用手机号当作账号,慢慢的账号也变成了相对敏感的信息。因此通过这种方式同时也可以对账号信息加密。

二、安全输入

黑客:“既然我没办法在传输的时候破解你,那我就在你输入的时候直接获取”。所以,就出现了键盘记录器。键盘记录器可以分为硬件记录和软件记录。硬件键盘记录有人分享过文章,有兴趣的可以看看https://zhuanlan.zhihu.com/p/147862345。

软件键盘记录器就相对可以理解,就好比启动了一个后台程序记录键盘。所以在支付平台就有了密码控件,也就是在密码输入的时候就对其进行了处理。

密码控件说到底也是计算机对于密码输入时的安全处理,也有很多绕过的方式,这是一场开发者与逆向大佬之间的博弈。个人以为,我这种小菜鸡暂时只需要看清楚他们打架的招式即可。并没有太多深入的研究。

三、安全存储

3.1、 明文传输

最烂的存储方式,目前很少有人这么干了,在此不再叙述。

3.2、MD5保存

一种次烂的存储方式。严谨的说,MD5并不是加密算法,这是一种常用的Hash算法。与之类似的还有SHA1、SHA2、SHA3等。这些算法在短时间内可以将信息计算其摘要,并且是不可逆的。密码通过Hash之后提交给服务器,利用其不可逆的特性,实现密码的安全。

看似这是一种很不错的方案,但是这种方案,并不完美。由于Hash的速度很快,现代服务器每秒可以计算大约330MB的 MD5 哈希值 。如果您的用户有小写、字母数字和 6 个字符长的密码,您可以在大约40 秒内尝试该大小的每个可能的密码。如果有自己的小型计算机集群。让您每秒尝试大约 700,000,000 个密码。按照这个速度,您将以每秒超过一个的速度破解这些密码。

被人撞库就麻烦了。

3.3、 MD5+盐值

盐:一个随机的字符串,往明文密码里加盐就是把明文密码和一个随机的字符串拼接在一起。

为了应对黑客们用彩虹表破解密码,我们可以先往明文密码加盐,然后再对加盐之后的密码用哈希算法加密。由于盐在密码校验的时候还要用到,因此通常盐和密码的哈希值是存储在一起的。采用加盐的哈希算法对密码加密,要确保要往每个密码里添加随机的唯一的盐,而不是让所有密码共享一样的盐。虽然加盐的算法能有效应对彩虹表的破解法,但它的安全级别并不高,因为计算哈希值耗时极短,黑客仍然可以用穷举法来破解,只是增加了一些耗时,没有实质性的防御力。

3.4、bcrypt

一种很慢的算法,比MD5慢好几个数量级。 我们可以通过参数设置重复计算的次数,重复计算的次数越多耗时越长。如果计算一个哈希值需要耗时1秒甚至更多,那么黑客们采用暴利法破解密码将几乎不再可能。破解一个6位纯数字密码需要耗时11.5天,更不要说高安全级别的密码了。虽然它很慢,但是在登录这种并发不高的场景,足够了。bcrypt 内置了盐来防止彩虹表攻击。

结论

其实丝毫许久,讨论了一整篇文档都在讨论密码。但是,我想说最好的密码就是没有密码,这个大家可以自己想一下,你可能听说过有人的QQ被盗,但是你等说过微信号被盗的吗?

如何安全的保存密码?相关推荐

  1. 怎么知道 网站是否直接明文保存密码_忘记账号密码 浏览器记住了 怎么找回密码?...

    对于健忘又没有使用保存密码插件的习惯的人来说,忘记密码是经常的事情. 而大家知道的也就是通过网站的找回密码选项,通过邮箱,手机号,人工等方式找回密码,但是如果是个小网站,没有找回的功能,或者当时是随便 ...

  2. putty 保存密码 自动登陆 四种方法

    Putty 基本是我在紧急时候用来登陆 Linux/Unix 终端的不二之先,因其小,开源,界面也非常实用.可是当你要在私有的机器上,经常性的要登陆很多机器的时候就觉得烦琐了,不光打开一堆的窗口,还要 ...

  3. 用cookie实现保存密码

    产品上要添加一个保存密码,本以为也算有点经验了,应该是小case,手动擒来的事,结果还是花了3个小时...,还是更要努力啊. 实现效果 1.前台加上勾选框,这个较简单 <input id=&qu ...

  4. 使用密码记录工具keepass来保存密码

    在第一章,曾经给过您建议,密码不要保存在文档中,那样不安全,如果密码很多而且又很复杂,人的大脑是不可能很容易记住的,只能记录下来,如果不能记在文档中那记在哪里呢?下面介绍给您一款记录密码的软件,使用. ...

  5. macOS 中使用钥匙串保存密码

    通常不建议在配置文件中存储密码.在 macOS 中我们可以使用内置的钥匙串应用来存储密码,可以方便地从终端访问. 在这个示例中,我们将使用它来存储用于签名 Android 应用程序的密钥库的密码. 在 ...

  6. arcgis超级工具密码_浏览器的自动保存密码是如何将我们的密码泄露的?

    开局我们先来回答一个小问题,你注册了多少的账号密码?设置了多少不同的密码?又有多少密码是相同的?讲道理,这很难回答.不知道你们平常会不会把一些账号密码让浏览器自动保存,下次直接点击就可以登入了,非常方 ...

  7. MAC下secureCRT无法保存密码的解决方法

    From: http://www.php230.com/securecrt-for-mac-store-password.html 在mac下新安装了secureCRT,取代系统自带的终端工具,主要是 ...

  8. 查看ie保存的表单_解决浏览器保存密码自动填充问题

    解决浏览器保存密码自动填充问题 问题描述 话说有一天,我如往常一样打开我的开发网站进行登录操作.浏览器很平常的在我们进行登录操作之后询问我是否需要记住密码,懒惰如我点击了记住密码.一切都很正常的进行着 ...

  9. php js记住密码功能,jquery.cookie.js实现用户登录保存密码功能的方法_jquery

    本文实例讲述了jquery.cookie.js实现用户登录保存密码功能的方法.分享给大家供大家参考,具体如下: 需要导入的js有jquery.js和jquery.cookie.js 在页面加载时首先尝 ...

  10. 远程桌面保存密码(凭据)的备份导出

    远程桌面保存密码(凭据)的备份导出 这年头Windows Server的各种维护都需要用到远程桌面,而在新的远程桌面协议中,远程桌面开始使用凭据进行登录 就像这样: 支持凭据登录最大的特色吧,就是可以 ...

最新文章

  1. c# 重写override
  2. 【推荐系统】深入理解推荐系统:无需人工特征工程的xDeepFM
  3. 【20190226】JavaScript-知识点记录:dom0级事件,dom2级事件
  4. POJ 1176 Party Lamps USACO 2.2 派对灯(搜索)
  5. 19c 新特性: Hint Usage Reports详解
  6. android 动态获取全县_android 6.0之后动态获取权限
  7. 人脸识别资源推荐:20款人脸检测/识别的API、库和软件
  8. 桥牌笔记:挤牌的条件之一,调整赢墩到只差一墩
  9. Discuz!客户端api开发(一)
  10. 如何在PHP中使用Modulo运算符
  11. 中国银联mPOS通用技术安全分析和规范解读
  12. 算法面试,是要考考你的基本盘
  13. 21、python线程
  14. 5*6的扫雷游戏的MATLAB程序(随机布雷与显示雷数部分)
  15. 计算机u盘中文名显示乱码,教你u盘出现乱码该怎么办
  16. 软文写作_软文推广写作_推广软文写作_公司软文写作|Giiso智搜
  17. 如何防止刷短信验证码?
  18. ag-grid基本配置
  19. php标签打印源码,C#标签设计打印程序源码
  20. 在PyBullet中进行机械臂的强化学习

热门文章

  1. 十进制转二进制(C语言实现)
  2. 【双闭环】链式STATCOM在系统电压不平衡环境下控制策略
  3. 半导体器件物理【17】非平衡过剩载流子 —— 复合
  4. 你和月薪6位数的人,差距究竟在哪里?「用户案例」
  5. 短视频如何选题?三个方法来帮忙,帮你避免江郎才尽
  6. 审视自己再出发,在职读研从人民大学与加拿大女王大学金融硕士项目起航
  7. 怎么才能在word里从第三页开始编页码啊
  8. 雄关漫道,web 开发
  9. 2101-正方形面积-JAVA
  10. 浅谈蓝湖使用ps插件快速构建代码