密码不要加密
-
我们需要明确,加密的作用是啥?
- 没人关心用户的密码是什么,只会关心能不能登录。只要能登录,拿到的是密码原文还是密码密文其实没区别。
-
我们考虑传输加密的情况
-
明文传输只有一种方式可以登录,就是通过密码原文
-
加密传输有两种方式可以登录,其一登录框的原文,另外一种是跳过登录框的密文。
-
如果传输加密方式和密码储存加密方式一样,存储密码加密就没有意义了。
-
-
我们考虑 加密传输和加密存储 相互组合的4种情况
-
第1种: 加密存储,加密传输。加入加密算法用的任意摘要算法。
结果:用户输入明文,前端必须知道加密算法,然后把密文传递给后端,等值比对。传输过程密文泄露,后可以直接用密文直接登录,后端数据库泄露以后所有用户账号都可以登录。 -
第2种:加密存储,明文密码传输。加入加密算法用的任意摘要算法。
结果:用户输入明文,前端不知道用的啥加密算法,明文密码传递给后端以后偶,加密比对。传输过程明文密码泄露以后,可以直接登录,后端数据库泄露以后,别人不知道加密程序里面的加密方式,得不到密码原文,不会被被泄露。 -
第3种:明文存储,明文传输。
结果:用户输入明文,后端等值比对。传输过程,或者数据库泄露,都会被别的用户登录。 -
第4种:明文存储,加密传输。
结果:用户输入明文密码,前端需要知道加密算法,后端使用同样算法得到加密验证。传输过程密文泄露,用密文调用接口可以直接登录。数据库泄露,界面可以直接登录。
-
-
综合上结果,传输过程使用任意方式加密都没得用,不管是摘要算法,对称加密,还是非对称加密(除非通过另外一种安全的方式周期性的更换密钥)。因为你的登录接口,接受的就是这个东西,传输过程被窃取了,就能直接用。
-
明文存储密码数据库泄露的时候,必定会导致所有用户的账号可以被攻击者登录。密文存储密码的时候,如果攻击者不知道你程序里面使用的啥加密算法,即便它知道了密文也不知道原文,不能登录。前提是加密算法不会被很容易猜出来,或者说不容易得到原文。
-
谨记,后端密码加密存储,然后前端用同样的加密方式加密用户密码原文,然后传递给后端做等值比对是最不安全的做法,和全明文无异,甚至是脱了裤子放屁。如果穿过程用另外一种加密方式保证传输安全是可以的,但是绝对不能和数据库存储的加密方式一样。
能耍的时候就一定要耍,不能耍的时候一定要学。
--天道酬勤,贵在坚持posted on 2023-02-07 21:25 zhangyukun 阅读(142) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!