网站地图    收藏   

主页 > 后端 > 网站安全 >

j2ee框架使用中,框架特点及不良习惯容易引发的

来源:自学PHP网    时间:2015-04-17 11:59 作者: 阅读:

[导读] //ps:这也是个常见的问题,都知道,但为什么还是有人犯这个错误了(不是每个互联网公司都有SDL的,目前来看,公司业务大,架构不一定完整,安全架构更无从说起)?这里作者也是(...

 //ps: 这也是个常见的问题,都知道,但为什么还是有人犯这个错误了(不是每个互联网公司都有SDL的,目前来看,公司业务大,架构不一定完整,安全架构更无从说起)?这里作者也是(查看自己写的简单MVC模式框架实现的一个简单应用中出现了类似问题,虽然没危害,但觉得开发时的习惯很重要,能避免一些安全问题),在这里留个底本,如果哪天转行做做安全玩玩,没准哥还能拿它做个j2ee安全开发培训的基础教材,哈哈!安全漏洞或问题的本质其实都很简单

 

 越权操作:是个很常见的安全问题,应用开发或设计者对访问权限没有考虑或考虑不全。他们即希望于用个未知的访问URL来打发不熟悉开发的攻击者,但如果熟悉就很容易被猜解了。

 

  MVC模式的框架,如:Struts2(其他常规框架或自己写的框架同理,这里框架优点我们就不去讨论了!),它对访问控制弄了个类似默认的规范,对于同一业务对象或者叫DTO的操作都可以(注意这里的“可以”之词,是不强迫你,但默认要你按这个流程开发了,由开发者决定的问题。)放在一个类里面实现,而不同的操作(无非:C(增)R(查)U(改)D(删)等操作,)通过类里面的不同方法实现,但就是这个规范的引导加上一些开发时对实现方法的命名不良习惯及诸多因素的影响,可能导致安全问题的发生,如:

 

 对于有权限考虑的应用,如果是个注册型的网站,简单拆分一下CRUD操作权限(在这里我们只讨论越权,平行权限之类等问题不考虑了!),C(增加即注册),及U(修改)用户是可以触及;而R(查询)、D(删除)只有管理员才能操作的,实例代码:

 import com.opensymphony.xwork2.ActionSupport;

 public class MemberAction extends ActionSupport  {
    

     public String register()  {
         //注册用户,实例代码略...
         return REGISTER;
    } 


     public String add()  {
         //保存用户,实例代码略...
         return ADD;
    } 
    
     public String getList()  {
         //查询用户,实例代码略...
         return LIST;
    } 
    
    

         //其他方法省略...

 


     public String execute()  {

  
         return SUCCESS;
    } 


 

 

 当用户注册时,先访问:http://xxx.xxx.xxx/member.do?method=register注册,再通过:http://xxx.xxx.xxx/member.do?method=add保存数据。如果是一个了解j2ee开发流程的攻击者,马上就会猜解到method=xxx其他方法名(如关键字:list、getList)来访问管理员权限:http://xxx.xxx.xxx/member.do?method=getList。

 

 

在这里绝对不是偶然,在实际开发中,也不会将方法名称搞得很复杂,而且开发者在对框架学习之初对add、getList、delete等,这样类似枚举类型的关键字选词产生依赖,形成习惯,熟悉攻击者就很容易猜解它。

 

 

值的注意的是,这里越权问题的产生,有一个很大因素:框架提供一个业务对象操作的类似规范(在同一个Action类中操作,框架不强迫,但结合上下文容易出现安全问题。主要是说这个问题,哈哈!)!

 

  //问题太简单,都无力去描述了,但发现你们做安全的人当前就是反复在做这些事情

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论