jfinal2.2的Controller.renderCaptcha()报错

走位风骚闪着腰 发布于 2016/09/12 10:24
阅读 342
收藏 0
java.lang.NoSuchMethodError: javax.servlet.http.Cookie.setHttpOnly(Z)V

servlet2.5没有这个方法,没法使用Controller.renderCaptcha(),虽然try..catch,但是验证码还是显示不出来。

@Jfinal



加载中
0
JFinal
JFinal
tomcat 换高一点的版本即可打完收工,你当前使用的版本不支持 httponly 设置
0
走位风骚闪着腰
走位风骚闪着腰

引用来自“JFinal”的评论

tomcat 换高一点的版本即可打完收工,你当前使用的版本不支持 httponly 设置

不换tomcat的前提下,有什么解决办法么?

try {
			// try catch 用来兼容不支持 httpOnly 的 tomcat、jetty
			cookie.setHttpOnly(true);
		} catch (Exception e) {
			LogKit.logNothing(e);
		}



看了源码,貌似是可以兼容低版本的tomcat

JFinal
JFinal
几乎所有的web应用都会用到点js代码,如果该 js 中有这样的恶意读取 cookie 并发送给攻击者的情况,httponly 就可以保障 js 无法读取该 cookie
JFinal
JFinal
此外,httponly 是极度重要的安全保障,例如登录成功后保存在 cookie 中的sessionId 值,如果没有这个 httponly 为 true 的设置,在你应用中的任何 js 都可以获取该 cookie值,并且发送给攻击者,然后攻击者拿到这个值以后,就可以冒充你的身份登录了
JFinal
JFinal
jfinal 提前考虑过 tomcat 版本问题,不过这个 try catch 貌似解决不了,单步调试一下,有结果记得反馈
返回顶部
顶部