应用Struts框架的一个安全隐患及解决方案
来源:互联网 发布:微信去升级精简优化版 编辑:程序博客网 时间:2024/05/21 01:29
重要提示:根据lironghai的评论,经验证,发现在WebLogic下由于安全限制不能使用本文所推荐的目录安排。为了保证系统的可移植性,不建议大家采用本文的方式。
问题使用Struts框架时,权限通常控制在Action级(比如将权限验证放在Action的基类中,这样新的Action都继承于这个Action基类,所有Action就可以专注于业务逻辑,而不需要重复地进行权限控制了),这也符合MVC中的角色划分。然而,这会产生一个安全隐患。因为权限控制在Action中,所以,页面也就没有安全屏障了。一般的新增数据、更新数据不会有什么问题,因为这些数据必须通过HTML的Form提交到Struts的中心控制器,最终由相应的Action来处理,所以Action中就可以验证该用户的权限了。然而,对于一些不需要Action进行数据存取,或者有的页面没有严格按照MVC的角色划分而在页面中有获取数据的代码,那么这个页面就危险了。比如,显示一张通知页面,通常可以通过配置权限,使部分授权的用户才可以看到该级别的通知。这个通知页面是不需要从数据库中获取数据的。所以,可以不通过Action的调用来显示,而是直接敲入显示该通知的页面的链接就可以看到了。甚至不需要登录系统,不用管是否有查看该通知的权限!
比如下图中,请求1:
http://.../showannouncement.do
是通过正常的途径访问的,需要经过权限验证。而请求2:
http://.../announcementshow.jsp
则完全绕过了权限检查,任何人,不需要登录系统就可以访问到该信息了。
解决方案解决的办法也不是没有,非常简单。大家都知道JSPWeb容器会对应用的WEB-INF目录下的所有文件加以保护的,任何用户都不能直接通过浏览器访问WEB-INF目录(包括子目录)下的任何资源,然而这些资源可以被JSPWeb容器访问。所以,解决办法已经出来了。可以把你的JSP页面放到WEB-INF目录下,在Struts-config.xml的action的配置中注意要把转向的页面指向类似:/WEB-INF/pages/announcementshow.jsp。这样就保证了所有数据的安全了。
使用本文的方法,甚至可以对静态的页面,比如html的页面进行保护,设置权限以限制访问。
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>- 应用Struts框架的一个安全隐患及解决方案
- Struts框架的一个安全隐患及解决方案(WEB-INF)
- 常见web安全隐患及解决方案
- Struts 2 数据验证及验证框架的应用
- 关于Struts框架-简单应用及原理
- struts框架搭建解决方案
- 10大重要的Web应用安全隐患
- ASP+Access的安全隐患及对策
- ASP+Access的安全隐患及对策
- ASP+Access的安全隐患及对策
- ASP+Access的安全隐患及对策
- 谈AJAX的安全性及AJAX安全隐患
- 谈AJAX的安全性及AJAX安全隐患
- 谈谈AJAX的安全性及AJAX安全隐患
- ASP+Access的安全隐患及对策
- AJAX的安全性及AJAX安全隐患
- ASP+Access的安全隐患及对策
- 谈谈AJAX的安全性及AJAX安全隐患
- Struts中不同的Action和ActionForm组合
- 怎么在网页制作拖拽的拼图效果
- LearnSpringinspring(三)
- 让你打开的新窗口与众不同
- 让你打开的新窗口与众不同
- 应用Struts框架的一个安全隐患及解决方案
- 八种风格的时间日期
- Struts1.0学习文档--初学者入门的地方
- 网页制作JavaScript特效两例
- 关于Struts的性能怀疑
- 强制输出变数
- 怎样降低Struts中不需进行业务处理的性能损耗!
- 检测变量类型
- struts+hibernate例子(原创)