密码不要加密

  1. 我们需要明确,加密的作用是啥?

    • 没人关心用户的密码是什么,只会关心能不能登录。只要能登录,拿到的是密码原文还是密码密文其实没区别。
  2. 我们考虑传输加密的情况

    • 明文传输只有一种方式可以登录,就是通过密码原文

    • 加密传输有两种方式可以登录,其一登录框的原文,另外一种是跳过登录框的密文

    • 如果传输加密方式和密码储存加密方式一样,存储密码加密就没有意义了。

  3. 我们考虑 加密传输和加密存储 相互组合的4种情况

    • 第1种: 加密存储,加密传输。加入加密算法用的任意摘要算法。
      结果:用户输入明文,前端必须知道加密算法,然后把密文传递给后端,等值比对。传输过程密文泄露,后可以直接用密文直接登录,后端数据库泄露以后所有用户账号都可以登录。

    • 第2种:加密存储,明文密码传输。加入加密算法用的任意摘要算法。
      结果:用户输入明文,前端不知道用的啥加密算法,明文密码传递给后端以后偶,加密比对。传输过程明文密码泄露以后,可以直接登录,后端数据库泄露以后,别人不知道加密程序里面的加密方式,得不到密码原文,不会被被泄露。

    • 第3种:明文存储,明文传输。
      结果:用户输入明文,后端等值比对。传输过程,或者数据库泄露,都会被别的用户登录。

    • 第4种:明文存储,加密传输。
      结果:用户输入明文密码,前端需要知道加密算法,后端使用同样算法得到加密验证。传输过程密文泄露,用密文调用接口可以直接登录。数据库泄露,界面可以直接登录。

  4. 综合上结果,传输过程使用任意方式加密都没得用,不管是摘要算法,对称加密,还是非对称加密(除非通过另外一种安全的方式周期性的更换密钥)。因为你的登录接口,接受的就是这个东西,传输过程被窃取了,就能直接用。

  5. 明文存储密码数据库泄露的时候,必定会导致所有用户的账号可以被攻击者登录。密文存储密码的时候,如果攻击者不知道你程序里面使用的啥加密算法,即便它知道了密文也不知道原文,不能登录。前提是加密算法不会被很容易猜出来,或者说不容易得到原文。

  6. 谨记,后端密码加密存储,然后前端用同样的加密方式加密用户密码原文,然后传递给后端做等值比对是最不安全的做法,和全明文无异,甚至是脱了裤子放屁。如果穿过程用另外一种加密方式保证传输安全是可以的,但是绝对不能和数据库存储的加密方式一样。

posted on   zhangyukun  阅读(142)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示