首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

将EJB作为实例变量注入servlet是否安全?

将EJB作为实例变量注入servlet是否安全?

这个问题涉及到了Java EE(Java Platform, Enterprise Edition)中的EJB(Enterprise JavaBeans)和Servlet技术。EJB是一种用于构建可扩展企业级应用程序的组件模型,而Servlet是一种用于处理Web请求的技术。

将EJB作为实例变量注入servlet可能会导致安全问题,因为这样做可能会暴露EJB的实现细节,并允许servlet直接访问EJB的状态。这可能会导致以下安全问题:

  1. 数据泄露:恶意用户可能会利用注入的EJB实例直接访问和修改数据,从而导致数据泄露。
  2. 代码注入:恶意用户可能会利用注入的EJB实例执行恶意代码,从而破坏系统的安全性。
  3. 权限绕过:恶意用户可能会利用注入的EJB实例绕过权限检查,从而获得未经授权的访问权限。

为了确保安全性,建议使用以下方法将EJB注入servlet:

  1. 使用Java EE的依赖注入(Dependency Injection)机制,将EJB作为方法参数或者通过@EJB注解注入到servlet中。
  2. 使用Java EE的安全机制,确保只有经过授权的用户才能访问EJB。
  3. 使用Java EE的权限管理机制,确保EJB的访问权限仅限于需要访问的用户。

总之,将EJB作为实例变量注入servlet可能会导致安全问题,因此建议使用Java EE的依赖注入和安全机制来确保系统的安全性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

经典笔试篇-EJB及Spring篇

【中等难度】 答:远程接口和Home 接口不需要直接实现,他们的实现代码是由服务器产生的,程序运行中对应实现类会作为对应接口类型的实例被使用。...174、请对以下在J2EE 中常用的名词进行解释(或简单描述) 【中等难度】 答:web 容器:给处于其中的应用程序组件(JSP,SERVLET)提供一个环境,使JSP,SERVLET 直接跟容器中的环境变量接口交互...应用程序只需调用其提供的接口即可; JAF:(Java Action FrameWork)JAVA 安全认证框架。提供一些安全控制方面的框架。...【中等难度】 答:三种机制为:通过setter 方法注入、通过构造方法注入和接口注入。 178、写出你熟悉的开源框架以及各自的作用。...线程API 指非线程对象的方法,如notify,wait 等); 不能操作awt; 不能实现服务器功能; 不能对静态属性存取; 不能使用IO 操作直接存取文件系统; 不能加载本地库; 不能将this 作为变量和返回

1.4K20
  • Java面试之EJB & Spring

    【中等难度】 答:远程接口和Home 接口不需要直接实现,他们的实现代码是由服务器产生的,程序运行中对应实现类会作为对应接口类型的实例被使用。...13、请对以下在J2EE 中常用的名词进行解释(或简单描述) 【中等难度】 答:web 容器:给处于其中的应用程序组件(JSP,SERVLET)提供一个环境,使JSP,SERVLET 直接跟容器中的环境变量接口交互...应用程序只需调用其提供的接口即可; JAF:(Java Action FrameWork)JAVA 安全认证框架。提供一些安全控制方面的框架。...【中等难度】 答:三种机制为:通过setter 方法注入、通过构造方法注入和接口注入。 17、写出你熟悉的开源框架以及各自的作用。...notify,wait 等); 2)不能操作awt; 3)不能实现服务器功能; 4)不能对静态属性存取; 5)不能使用IO 操作直接存取文件系统; 6)不能加载本地库; 7)不能将this 作为变量和返回

    47530

    初识JAVA:JAVA最全基础知识复习(超详尽!!值得收藏!)

    对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。...HashMap允许null作为一个entry的key或者value,而Hashtable不允许。...由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。...93、EJB需直接实现它的业务接口或Home接口吗,请简述理由 远程接口和Home接口不需要直接实现,他们的实现代码是由服务器产生的,程序运行中对应实现类会作为对应接口类型的实例被使用。...)提供一个环境,使JSP,SERVLET直接更容器中的环境变量接口交互,不必关注其它系统问题。

    1.5K10

    走进JavaWeb技术世界10:从JavaBean讲到Spring

    本系列文章整理到我在GitHub上的《Java面试指南》仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下Star哈 文章首发于我的个人博客...如果要找到size变量,你就必须保持向后兼容性。...使用了EJB, 你就可以把精力只放在业务上了, 那些烦人的事务管理, 安全管理,线程 统统交给容器(应用服务器)来处理吧。 ...写法不同:传统javabean作为值对象,要求每个属性都提供getter和setter方法;但spring中的bean只需为接受设值注入的属性提供setter方法。...,并调用Bean实例的方法 bean里面还有很多属性 生命周期不同:传统javabean作为值对象传递,不接受任何容器管理其生命周期;spring中的bean有spring管理其生命周期行为。

    37400

    走进JavaWeb技术世界10:从JavaBean讲到Spring

    上述实现为了能够快速获取链表的大小,把链表大小缓存在size变量中。...发现找不到什么size变量。如果要找到size变量,你就必须保持向后兼容性。...使用了EJB, 你就可以把精力只放在业务上了, 那些烦人的事务管理, 安全管理,线程 统统交给容器(应用服务器)来处理吧。...写法不同:传统javabean作为值对象,要求每个属性都提供getter和setter方法;但spring中的bean只需为接受设值注入的属性提供setter方法。...,并调用Bean实例的方法 bean里面还有很多属性 生命周期不同:传统javabean作为值对象传递,不接受任何容器管理其生命周期;spring中的bean有spring管理其生命周期行为。

    32920

    JAVA相关基础知识复习(超详尽!!值得收藏!!)

    对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。...HashMap允许null作为一个entry的key或者value,而Hashtable不允许。...由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。....,7.不能将this作为变量和返回,8.不能循环调用。 75、remote接口和home接口主要作用 remote接口定义了业务方法,用于EJB客户端调用业务方法。...93、EJB需直接实现它的业务接口或Home接口吗,请简述理由。 远程接口和Home接口不需要直接实现,他们的实现代码是由服务器产生的,程序运行中对应实现类会作为对应接口类型的实例被使用。

    80600

    《Spring Boot极简教程》第1章 Spring Boot史前简述小结参考资料

    EJB规范定义了EJB组件在何时如何与它们的容器进行交互作用。容器负责提供公用的服务,例如目录服务、事务管理、安全性、资源缓冲池以及容错性。但这里值得注意的是,EJB并不是实现J2EE的唯一途径。...Java Servlet: Servlet是一种小型的Java程序,它扩展了Web服务器的功能。作为一种服务器端的应用,当被请求时开始执行,这和CGI Perl脚本很相似。...当我们的代码里需要使用某个实例的时候就可以直接从容器里获取。...对象的实例化由spring容器负责搞定,所以它被称为控制反转,控制反转的意思就是本来属于java程序里构建对象的功能交由容器接管,依赖注入(DI)就是当程序要使用某个对象时候,容器会把它注入到程序里。...Spring IOC有三种注入方式:接口注入、setter注入、构造器注入

    55720

    Java中常见的服务器

    开发人员可以Jetty容器实例化成一个对象,可以迅速为一些独立运行(stand-alone)的Java应用提供网络和web连接。在做基于Maven的Java项目开发时,常用Jetty来运行。...Jetty在设计之 初就是作为一个可以嵌入到其他的Java代码中的servlet容器而设计的,因此开发小组Jetty作为一组Jar文件提供出来,可以非常方便的在自 己的容器中将Jetty实例化成一个对象并操纵该容器对象...JBoss与Web服务器在同一个Java虚拟机中运行,Servlet调用EJB不经过网络,从而大大提高运行效率,提升安全性能。...执 行 用 户 调 用 的Servlet 进 行数据库连接,Sql请求 发送给数据库进行处理。...数据库结果返回Appliction Server。Servlet生成动态页面后, 处理结果交给HttpServer。HttpServer页面返回给用户。

    2.1K10

    第1章 Spring Boot史前简述小结参考资料

    EJB规范定义了EJB组件在何时如何与它们的容器进行交互作用。容器负责提供公用的服务,例如目录服务、事务管理、安全性、资源缓冲池以及容错性。但这里值得注意的是,EJB并不是实现J2EE的唯一途径。...Java Servlet: Servlet是一种小型的Java程序,它扩展了Web服务器的功能。作为一种服务器端的应用,当被请求时开始执行,这和CGI Perl脚本很相似。...当我们的代码里需要使用某个实例的时候就可以直接从容器里获取。...对象的实例化由spring容器负责搞定,所以它被称为控制反转,控制反转的意思就是本来属于java程序里构建对象的功能交由容器接管,依赖注入(DI)就是当程序要使用某个对象时候,容器会把它注入到程序里。...Spring IOC有三种注入方式:接口注入、setter注入、构造器注入

    60440

    java面试大总结(3)

    104、静态变量实例变量的区别? static i = 10; //常量 class A a; a.i =10;//可变 105、什么是java序列化,如何实现java序列化?...对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。...每一个EJB由一个远程接口、一个本地接口和一个EJB容器实现组成,远程接口声明了提供给EJB客户调用的各种应用方法,本地接口声明了创建新的EJB实例的create方法、寻找EJB实例的查找(finder...)方法以及刪除EJB实例的remove方法。...安全性:java不支持指针,一切对内存的访问都必须通过对象的实例变量来实现,这样就防止程序员使用***等欺骗手段访问对象的私有成员,同时也避免了指针操作中容易产生的错误。 ?

    49920

    Spring Boot线程安全指南

    在基于servlet的标准Spring Web应用程序中,每个新的HTTP请求都会生成一个新线程。如果容器为特定请求创建一个新的bean实例,我们可以说这个bean是线程安全的。...在这种情况下,您可以原型视为线程安全的。 那么Spring Web控制器是否是线程安全的? 这取决于这种控制器的作用域。 如果控制器定义为默认的单例bean,则它不是线程安全的。...当您将控制器定义为原型时,Spring框架将为每个Web请求创建一个新实例。除非将它们注入安全的作用域bean,否则可以原型作用域的控制器视为线程安全的。...(banq注:又回到了EJB的无状态bean和有态Bean,无状态实际是不可变) 如果bean的方法执行不修改其实例的字段属性,则bean是无状态的。...其实可变数据或状态都是保存数据库,如果数据库作为业务核心,就不必担心多线程问题,但是六边形和干净架构中,需要将数据库作为技术放到业务核心之外,在这种架构下,就需要多注意多线程问题。

    1.7K20

    Java面试葵花宝典打印版【7】

    Domain目录\服务器目录\applications,应用目录放在此目录下将可以作为应用访问,如果是Web应用,应用目录需要满足Web应用目录要求,jsp文件可以直接放在应用目录中,Javabean...93、EJB需直接实现它的业务接口或Home接口吗,请简述理由。 远程接口和Home接口不需要直接实现,他们的实现代码是由服务器产生的,程序运行中对应实现类会作为对应接口类型的实例被使用。...95、请对以下在J2EE中常用的名词进行解释(或简单描述) web容器:给处于其中的应用程序组件(JSP,SERVLET)提供一个环境,使JSP,SERVLET直接更容器中的环境变量接口交互,不必关注其它系统问题...JAF:(Java Action FrameWork)JAVA安全认证框架。提供一些安全控制方面的框架。让开发者通过各种部署和自定义实现自己的个性安全控制策略。...Model" 代表的是应用的业务逻辑(通过JavaBean,EJB组件实现), "View" 是应用的表示面(由JSP页面产生),"Controller" 是提供应用的处理过程控制(一般是一个Servlet

    51440

    框架篇二

    3、根据struts.xml配置,找到需要调用的Action类和方法,并通过IoC方式,注入给Aciton。 4、Action调用业务逻辑组件处理业务逻辑,这一步包含表单验证。...● Struts 的Action必需是thread-safe方式,它仅仅允许一个实例去处理所有的请求。所以action用到的所有的资源都必需统一同步,这个就引起了线程安全的问题。   ...● 对Servlet的依赖性过强. Struts处理Action时必需要依赖ServletRequest 和ServletResponse,所有它摆脱不了Servlet容器。   ...● Spring能有效地组织你的中间层对象,不管你是否选择使用了EJB。如果你仅仅使用了Struts或其他为J2EE的 API特制的framework,Spring致力于解决剩下的问题。   ...依赖注入(Dependecy Injection)和控制反转(Inversion of Control)是同一个概念,具体的讲:当某个角色需要另外一个角色协助的时候,在传统的程序设计过程中,通常由调用者来创建被调用者的实例

    56240

    JavaEE中资源注入松耦合的实现 | 从开发角度看应用架构13

    由于它与CDI有关,因此上下文指的是按数据范围定义应用程序的能力,CDI指定的依赖注入是一个过程,通过该过程,对象的实例可以以类型安全的方式自动实例化为其他应用程序对象。...包括类型安全性会在开发生命周期的早期暴露注入错误,并使调试更容易。 依赖注入(DI)的主要好处之一是应用程序组件的松耦合。例如,客户端和服务器组件松散合,因为可以几个不同版本的服务器注入客户端。...因为资源注入使用JNDI名称来注入资源,所以资源注入不像CDI那样是类型安全的。 CDI是类型安全的,因为对象是基于类型实例化的。...EJB还提供其他功能,例如并发功能,bean池,安全性以及CDI中未包含的其他功能。 在创建bean时,如果不需要EJB的功能,最好不要使用EJB。 相反,使用CDI来管理上下文和依赖注入。...但EJB需要将其类型标记为@Stateless,@ MessageDriven等的注释。 要将bean的实例注入另一个类的实例变量,请使用@Inject注释。

    1.2K20

    注解@PostConstruct与@PreDestroy详解及实例

    API使用说明 以下为@PostConstruct的API使用说明: PostConstruct 注释用于在依赖关系注入完成之后需要执行的方法上,以执行任何初始化。此方法必须在类放入服务之前调用。...支持依赖关系注入的所有类都必须支持此注释。即使类没有请求注入任何资源,用 PostConstruct 注释的方法也必须被调用。只有一个方法可以用此注释进行注释。...应用 PostConstruct 注释的方法必须遵守以下所有标准:该方法不得有任何参数,除非是在 EJB 拦截器 (interceptor) 的情况下,根据 EJB 规范的定义,在这种情况下它将带有一个...,除非是能够处理异常并可从中恢复的 EJB。...执行流程图 两个注解加入只会,Servlet执行流程图: 在具体Bean的实例化过程中,@PostConstruct注释的方法,会在构造方法之后,init方法之前进行调用。

    74730

    SSH框架(四) Spring、Spring MVC、Struts2优缺点整理

    说它轻量级有一大部分原因是相对与EJB的(虽然本人从没有接触过EJB的应用),重要的是,Spring是非侵入式的,基于spring开发的应用一般不依赖于spring的类。...DI:称作依赖注入(Dependency Injection),和控制反转一个概念,具体的讲,当一个角色需要另外一个角色协助的时候,在传统的程序设计中,通常有调用者来创建被调用者的实例。...创建被调用对象有Spring来完成,在容器实例化对象的时候主动的将被调用者(或者说它的依赖对象)注入给调用对象,因此又叫依赖注入。...面向对象编程程序分成各个层次的对象,面向切面的程序运行过程分解成各个切面。...spring mvc是基于方法的设计,而sturts是基于类,每次发一次请求都会实例一个action,每个action都会被注入属性,而spring基于方法,粒度更细,但要小心把握像在servlet控制数据一样

    97220
    领券