`
gavinxixi
  • 浏览: 21223 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

很久以前的一些Struts2经验总结

阅读更多

傻下傻下咁,最近继续学习Struts2,这么傻瓜化的开发框架,我竟然还是遇到一大堆问题。
服务器端:
1)pattern设计真的好重要啊,细化的时候需要考虑好多东西,首先就是对框架要熟悉,这一点我作为新手就做不到了。设计出来的东西基本不可用,结果开发的时候一团糟,业务逻辑根本不能体现,结果变成补漏洞,效率非常的低。
2)字符集的问题,Struts2默认不支持中文,稍微搜了一下资料,用filter在不知道原理的情况下解决了。MySql也是,在url加上字符集信息即可。
3)怎么调试,查看出错信息,表笑我,我知道这个问题很低B,开始的时候我真的只能从页面看到tomcat的异常返回信息……后来发现原来myeclipse中的console有更详细的堆栈信息
4)ubuntu下tomcat的部署,总是提示我找不到JRE_HOME,我明明在系统变量里面设好了路径呀……搞了N久。才想起我是在自己的账户下设环境变量的,而tomcat是用root权限启动的,root下没有java的环境变量,晕。
5)整合Servlet和jsp脚本,因为部分功能是交由文叔写的,因为文叔对Servlet比较熟。整合还算顺利,不过文叔使用sql Server(晕啊,这么混乱的开发肯定史无前例),搞了很久没办法切换到jdbc下,一下子把全部数据库代码用Hibernate重写,文叔表情好崩溃啊……对不起啊……我这个so call CTO太烂了。然后就是jsp的脚本,加了一下对session空值的判断,就不那么容易报错了,文叔你要注意咯~
6)配置管理在ubuntu,新学的一门课程,关于版本控制的,蛮实用的,我在这里也弄了一下,windows下很简单两下就搞定了,可以我想用ubuntu做服务器啊,于是在上面很欢乐的键入apt-get install subversion……傻眼了,教育网的软件源没有,啊,没关系了,找源码来编译吧,反正以前也做过。辛辛苦苦用搜狗还有求助于小蕊的国际网路下了源码包和依赖包。弄了好几天了,不是缺这个包就是那个包,全在国外的,痛苦……最终都没有弄好,我恨华工校园网啊……要是有电信多好啊……
7)Cookie问题,搞了很久,而且还存在一些不得不解决的疑问,后文再述
JS方面:
1)div和css的控制……还是表笑我,菜鸟就菜鸟呗,这几样都是初学,其实就是动态调调值,很基础。
2)不会用调试器,以后慢慢改进……

 

关于Cookie:
很郁闷的一个东西,本来J2EE里面的response已经封装好了addCookie的方法了,网上的人也是这么做的,可是我死活都没有办法添加Cookie到本地(使用IE,Cookie只存在于浏览器进程,没有写入IE缓存)。也许这就是不了解底层技术细节的缘故,这么小的一个问题搞了很久都没有解决,甚至连网上也众说纷纭。后来终于想到可能是浏览器问题,换用firefox和chrome,诶,成了,Cookie能正确写入啊,就IE不行,晕啊,js已经不一样了,现在连服务器语言都有影响,真痛苦啊。
没办法,只好找微软的资料,发现用ASP写的Cookie中多了一个java中没有属性——Expires。就是它了,我没有再查Cookie的标准,不知道Cookie中是不是一定使用Expires来表示生存期的,是不是微软故意和java作对还是java我行我素,asp中的Cookie是可以直接add的,response中会自动添加Expires字段。用java的话就要自己写Set-Cookie的Header了,时间格式也要按照Expires=Thu, 01-Jan-1970 00:00:10 GMT的形式转换一下添加到最后,结果就成了这样一个不伦不类的格式,终于搞定了写入的那part了。

Date date = new Date();
                date.setTime(date.getTime()+60 * 60 * 24 * 14*1000);
                String[] d = date.toString().split(" ");
                String expires = d[0]+", "+d[2]+"-"+d[1]+"-"+d[5]+" "+d[3]+" "+d[4];
                response.setHeader("Set-Cookie", "gavin.cookie.rememberme=\""+cookie.getValue()+"\"; Version="+cookie.getVersion()+"; Domain="+cookie.getDomain()+"; Max-Age="+cookie.getMaxAge()+"; Path="+cookie.getPath()+";Expires="+expires);

 

 

接下来的疑问就是关于Cookie的安全性了,看了几篇介绍都不痛不痒的文章,只是说Cookie要加密,谁不知道呀。我思考了一下,提出疑问。
1)Cookie中保存用户标识(用户ID,密码等),对于这些信息的加密很简单,就算别人得到了你的Cookie文件也没办法读出你的信息,一个DES还有一些URL规则就搞定了。问题在于伪造。
2)假设我从你的电脑盗取了一个Cookie文件,我确实是没有办法盗取你的账户信息,但是Cookie无非就是用request发送一段信息到服务器而已,那么这段信息无论是否加密,Cookie文件中确实保存了,然后我把它发送到服务器,服务器是否就没有办法辨认哪个我是真正的用户呢?(大家都发送同一段字符串)
3)我看到一些说法是在服务器端保存Cookie副本,还有使用RSA加密,其实都没有脱离第2点所说,request求其可以冒仿,那么定然可以发送一摸一样的request,服务器应该怎么抵御这种攻击呢?请高手赐教。

其实问题的核心是,当Cookie被盗的时候如何保证安全性。 <!--v:3.2-->

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics