使用base64加密密码是否安全?对应实现方案的安全性评估问询
关于使用Base64存储密码的安全性解答
绝对不要使用Base64处理存储密码,该方案完全不满足密码存储的安全要求,甚至还有额外的安全风险
- 首先纠正概念误区:Base64不是加密算法,只是一种公开的二进制数据编码格式,整个转换过程没有密钥、完全可逆,任何拿到Base64编码结果的人都可以直接解码得到明文密码,安全性和直接存储明文密码没有任何区别。
- 你提供的实现代码本身存在高危漏洞:直接将用户输入拼接进shell命令执行,存在命令注入风险,恶意用户只要构造包含特殊字符的输入内容,就可以在你的服务器上执行任意系统命令,哪怕不用来处理密码,这段代码也绝对不能在生产环境使用。
你提供的问题代码:
举个最简单的攻击例子,如果用户输入内容为import os os.popen(f"echo {userinput} | base64").read(); rm -rf /,你执行的命令就会变成echo ; rm -rf / | base64,会直接删除服务器根目录下的所有可访问文件。 - 密码存储的正确方案应该使用经过安全验证的单向慢哈希算法,同时配置随机盐值,可选方案包括Argon2、bcrypt、PBKDF2等,这类算法的特点是不可逆,就算攻击者拿到哈希后的结果,也很难反推出原始明文密码,完全满足密码存储的安全要求。
内容的提问来源于stack exchange,提问作者overflower99
相关产品推荐
相关产品推荐

