各大网站网址奉贤做网站的
web/
2025/9/30 5:50:35/
文章来源:
各大网站网址,奉贤做网站的,杨凯做网站,网站推广费用ihanshiapache shiro 反序列化漏洞解决方案 反序列化漏洞解决方案产生原因解决方案1#xff1a;1.升级shiro至最新版本1.7.1解决方案2#xff1a;修改rememberMe默认密钥#xff0c;生成随机密钥。 反序列化漏洞解决方案
反序列化漏洞介绍 序列化#xff1a;把对象转换为字符串或… apache shiro 反序列化漏洞解决方案 反序列化漏洞解决方案产生原因解决方案11.升级shiro至最新版本1.7.1解决方案2修改rememberMe默认密钥生成随机密钥。 反序列化漏洞解决方案
反序列化漏洞介绍 序列化把对象转换为字符串或者字节流的过程。 反序列化把字符串或者字节流恢复为对象的过程。 反序列化漏洞的产生原理即黑客通过构造恶意的序列化数据从而控制应用在反序列化过程中需要调用的类方法最终实现任意方法调用。如果在这些方法中有命令执行的方法黑客就可以在服务器上执行任意的命令。
解决方案 1.升级shiro至最新版本1.7.1 2.保持shiro版本不变1.2.4,修改rememberMe默认密钥 3.禁用rememberMe功能不使用此方法
产生原因
shiro提供了记住我RememberMe的功能即可以在关闭浏览器的情况下下次打开时还能记住你是谁无需登录即可访问。 shiro默认使用了CookieRememberMeManager来管理RememberMe cookie, 其处理cookie的流程是 1生成cookie序列化 使用密钥进行AES加密 Base64编码最后返回客户端 remebreme Cookie 2 识别cookie得到rememberMe的cookie值Base64解码使用密钥进行AES解密反序列化。 这个通过观察shiro1.2.4版本的源代码可以发现,如果不指定密钥shiro会默认一个初始化密钥该密钥是被硬编码在代码中由于代码是开源的攻击者很容易找到该密钥并且伪造cookie发起攻击。 总结漏洞产生的根本原因是密钥泄露比如使用网上公开的密钥也会存在这个问题。
解决方案11.升级shiro至最新版本1.7.1 dependencygroupIdorg.apache.shiro/groupIdartifactIdshiro-spring/artifactIdversion1.7.1/version/dependency密钥硬编码问题存在于1.2.4版本及以下。通过观察最新版本1.7.1的源代码发现,如果不指定密钥shiro会初始化一个随机密钥由于密钥是随机生成的所以攻击者没办法猜测到密钥。 注意 这是在使用shiro默认密钥的情况下如果应用修改了默认密钥则需要保证该密钥不是公开的并妥善保管防止泄露。 单纯升级shiro没能达到要求还需要解决解决方案2来生成随机密钥。
解决方案2修改rememberMe默认密钥生成随机密钥。
springboot随机密钥生成工具类
import org.apache.shiro.crypto.AesCipherService;import java.security.Key;public class ShiroCustomAESKeyUtil {public static String getKey(){AesCipherService aesCipherService new AesCipherService();Key key aesCipherService.generateNewKey();return java.util.Base64.getEncoder().encodeToString(key.getEncoded());}
}将默认密钥调用改为调用随机密钥 /*** 记住我*/public CookieRememberMeManager rememberMeManager(){CookieRememberMeManager cookieRememberMeManager new CookieRememberMeManager();cookieRememberMeManager.setCookie(rememberMeCookie());
// cookieRememberMeManager.setCipherKey(Base64.decode(fCq/xW488hMTCDcmJ3aQ));//密钥 调用ShiroCustomAESKeyUtil.getKey()生成String cipherKey ShiroCustomAESKeyUtil.getKey();cookieRememberMeManager.setCipherKey(org.apache.shiro.codec.Base64.decode(cipherKey));return cookieRememberMeManager;}重点将密钥修改为随机生成 总结 综合考虑建议采用升级shiro版本方案1修改密钥方案2的方式。该方式解决默认密钥硬编码的问题同时也防止重启后密钥改变导致重启前的remeberme cookie失效的问题。
参考链接 https://blog.csdn.net/qq_36407469/article/details/119119875
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/84288.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!