关于JeeSite框架Shiro序列化漏洞修复解决⽅法关于JeeSite框架Shiro序列化漏洞修复解决⽅法
⼀、升级shiro的版本
将这⾥改为百度上所说的那个有漏洞的版本以上的随便版本:1.2.4以上版本
这⾥刚开始以为修改版本就可以解决这个漏洞,然⽽并没有。所以产⽣了第⼆步。
⼆、配置动态密匙
1、到项⽬shiro配置⽂件
2、按照源码的⽅式新写⼀个秘钥⽣成器
(1) 到项⽬种shiro⽬录下⾯新建⼀个类(如下图)
(2) 详细代码
public class GenerateCipherKey {
/**
* 随机⽣成密匙
*/
public static byte[]getcipherKey(){
KeyGenerator kg;
try{
kg = Instance("AES");
}catch(NoSuchAlgorithmException e){
String msg ="Unable to acquire AES algorithm. This is required to function.";
throw new IllegalStateException(msg, e);
}
kg.init(128);
shiro安全框架SecretKey sk = kg.generateKey();
byte[] cipherkey = sk.getEncoded();
return cipherkey;
}
}
3、修改shiro安全管理配置
(1)新增 property 内容rememberMeManager
<!-- 定义Shiro安全管理配置 -->
<bean id="securityManager"class="org.apache.DefaultWebSecurityManager">
<property name="realm"ref="systemAuthorizingRealm"/>
<property name="sessionManager"ref="sessionManager"/>
<property name="cacheManager"ref="shiroCacheManager"/>
<property name="rememberMeManager"ref="rememberMeManager"/>
</bean>
(2)新增⾃定义rememberMeManager 配置并引⽤GenerateCipherKey的generateNewKey⽅法
<bean id="rememberMeManager"class="org.apache.CookieRememberMeManager">
<property name="cipherKey"value="#{T( com.thinkgem.jeesitemon.security.shiro.GenerateCipherKey).getcipherKey()}"/> </bean>
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论