易雯郁 2012-03-14 16:31
浏览 387
已采纳

spring的MethodSecurityInterceptor这种设计方式安全吗

对业务方法的保护,spring security提供了MethodSecurityInterceptor这种拦截器进行处理。这样进行方法调用的时候就能够进行安全处理了。但问题是:
如果用户不是用spring的getbean方式获取对象的话,这种业务方法保护不久失效了吗?

ApplicationContext ctx =
WebApplicationContextUtils.getRequiredWebApplicationContext(request.getSession().getServletContext());
bill obj = (bill)ctx.getBean("bill");
String get=obj.getBill(null);
String CallAddfromSpring;
try{
CallAddfromSpring=obj.addBill(null);//[b]这样调用是不成功的,因为通过MethodSecurityInterceptor禁止该用户访问add方法[/b]
}catch (Exception e){
CallAddfromSpring=" CallAddfromSpring Exception";
}

 bill test=new BillImpl();
String DirectCallAdd=test.addBill(null);//[b]这样调用就是成功的。由于是直接生成的对象,我对add方法的保护失效了[/b]。

这样的安全机制算合理的吗?

  • 写回答

2条回答 默认 最新

  • Aronlulu 2012-03-15 08:47
    关注

    合理。
    你第二种方式已经脱离了spring容器的管理范围了。你不按照它的要求来,spring没办法管理到bean自然没办法做安全保证。
    安全机制前提是bean要给spring容器托管,这样它才能产生代理类来拦截,这算是一种协议与约束,写代码的人你是没办法控制的,但是有约束的代码运行起来后是可控的。
    jvm有安全机制,一般来说你跑在jvm上的class黑客是没办法获得的。
    spring security更多的是业务层面的保证。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 gwas 分析-数据质控之过滤稀有突变中出现的问题
  • ¥15 没有注册类 (异常来自 HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))
  • ¥15 知识蒸馏实战博客问题
  • ¥15 用PLC设计纸袋糊底机送料系统
  • ¥15 simulink仿真中dtc控制永磁同步电机如何控制开关频率
  • ¥15 用C语言输入方程怎么
  • ¥15 网站显示不安全连接问题
  • ¥15 51单片机显示器问题
  • ¥20 关于#qt#的问题:Qt代码的移植问题
  • ¥50 求图像处理的matlab方案