1. 什么是JNDI(Java Naming and Directory Interface)
JNDI是用于访问不同命名和目录服务的统一API接口;
2. JNDI的架构和原理
1. 架构:
第一层:java代码,是访问JNDI的代码;
第二层:JNDI API:统一的命名和目录服务接口
第三层:JNDI Naming Manager:JNDI管理器
第四层:JNDI SPI:用于构建JNDI实现的框架,能够动态的插入命名和目录服务提供商的产品;
第五层:命名和目录服务提供商的产品;
命名和目录服务提供商的产品,例如:DNS,LDAP,NIS,NDS……..;因为这些产品都是不同的提供商提供的产品,所以他们的命名和目录服务的标准不一致,各个目录服务采用的访问协议也是不一样的,所以,要是直接访问他们的话,就要编写不同的java代码来访问他们;因此,JNDI SPI就解决了这个问题,它能动态的插入这些命名和目录服务,能够将其协议专属的目录产品集成到系统中,使得我们能只需要调用一个统一的javaAPI就能够访问插入的产品了;
2.原理:
JNDI其实很好理解,他就是一个树状的结构,它的最顶是一个initialContext节点,然后它的下面就是绑定的一些对象或是一些subContext,用JNDI树就能够查找到树中每一个绑定上的节点上的对象的引用;
3.怎样连接到JNDI上?
Environment environment = new Environment() ;//创建一个环境对象
environment.setProviderurl(“t3://www.blogjava.net”) ;
environment.setSecurityPrincipal(“todd”) ;//认证的用户名
environment.setSecurityCredentials(“841026”) ;//密码
Context context = environment.getInitialContext() ;
//创建一个subContext并绑定一个对象:
Context subContext = context.createSubcontext(“subContext”) ;
subContext.rebind(“newObject”,object) ;//绑定的对象必须是可序列化的
subContext.close() ;
context.close() ;
4.如何通过JNDI查找bind的对象?
Object object = context.lookup(“User”) ;
//把user窄化到原型
User user = (User)javax.rmi.PortableRemoteObject.narrow(object, User.class) ;
context.close() ;
分享到:
相关推荐
### J2EE全面简介 #### 一、J2EE概念 Java 2 Platform, Enterprise Edition (J2EE) 是一种企业级应用开发平台标准,它基于 Java 语言,并且为开发分布式多层 Web 应用提供了强大的支持。J2EE 的主要目标是使企业级...
$ java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar [-C] [command] [-A] [address] where: -C - command executed in the remote classfile. (optional , default command is "open /Applications/...
**Java 2 Platform, Enterprise Edition (J2EE) 1.4 教程文档** Java 2 Platform, Enterprise Edition(J2EE)1.4 是一个用于构建企业级分布式应用程序的平台,它提供了多种服务、API 和服务器端的运行时环境。这个...
该压缩包"JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar"可能包含了一个JNDI注入攻击的示例或者测试工具,"SNAPSHOT"通常表示这是一个开发中的版本,可能尚未经过完整测试,因此可能存在漏洞或不稳定性。使用这样的...
总结,J2EE框架提供了丰富的工具和技术,帮助开发者构建高效、可扩展的企业级应用。从Servlet和JSP的基础,到Spring和Hibernate的高级应用,每一个环节都值得深入研究和实践。通过学习和使用这些框架,不仅可以提高...
**J2EE 1.5 API详解** J2EE(Java 2 Platform, Enterprise Edition)是Java平台上用于构建企业级应用程序的框架。1.5版本是J2EE平台的一个重要里程碑,它引入了许多新特性,优化了现有功能,并对开发人员提供了更...
J2EE,全称为Java 2 Platform, Enterprise Edition,是Java平台的一个版本,专为构建企业级分布式应用程序而设计。这个技术栈包含了多种组件和服务,旨在提供强大的后端支持,如Web服务器、应用服务器、数据库连接、...
标题"j2ee笔记--很有用的东西"表明这是一份关于J2EE技术的学习资料,可能包含了开发者在学习或工作中需要的重要知识点,对于面试准备或是日常开发工作都有很大的帮助。 描述"j2ee笔记--当你面试JAVA程序员的时候...
在压缩包中有一个文件名为 "JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar",这很可能是一个Java可执行的jar文件,其中封装了用于演示JNDI注入攻击或者进行安全测试的代码。用户可以通过运行这个jar文件来触发或者...
《J2EE完全参考手册-J2EE部署-pdf.rar》是一个针对Java初学者的资源包,主要聚焦于J2EE(Java 2 Platform, Enterprise Edition)的部署知识。J2EE是Oracle公司推出的企业级Java应用平台,用于构建分布式、多层的Web...
《精通J2EE--Eclipse、Struts、Hibernate、Spring整合應用案例》是一本深入探讨J2EE平台开发的专业书籍,特别关注了四个关键的技术框架:Eclipse集成开发环境(IDE)、Struts MVC框架、Hibernate对象关系映射(ORM)...
java asm jndi_JNDI-Injection-Exploit,用于log4j2漏洞验证 可执行程序为jar包,在命令行中运行以下命令: $ java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar [-C] [command] [-A] [address] 其中: -C ...
《J2EE完全参考手册-J2EE部署》是IT领域一本极为重要的参考资料,尤其对于Java企业级应用开发者来说,它是理解和掌握J2EE部署的关键工具。J2EE(Java 2 Platform, Enterprise Edition)是Oracle公司提供的一个用于...
标题中的"jndi-1_2_1.zip_jndi_jndi-1.2.1.jar"表明这是一个关于JNDI的版本1.2.1的开源软件包,其中包含了一个名为"jndi-1.2.1.jar"的JAR文件。这个JAR文件包含了JNDI库的所有实现,使得开发者可以在他们的Java项目...
JNDI注入漏洞 描述 JNDI-Injection-Exploit是用于生成可用的JNDI链接并通过启动RMI服务器,... 我们可以用JNDI-Injection-Exploit生成的链接替换“ rmi://127.0.0.1:1099 / Object”,以测试漏洞。 免责声明 所有信
Java 2 Platform, Enterprise Edition (J2EE) 是一个企业级的应用开发平台,它由Sun Microsystems(现已被Oracle收购)开发并推广,用于构建分布式、多层的企业应用程序。"j2EE-doc-en" 提供的是J2EE 5版本的官方...
**J2EE技术大全概述** J2EE(Java 2 Platform, Enterprise Edition)是Java平台的一个版本,专门针对企业级应用开发。它提供了一个全面的框架来构建、部署和管理多层、分布式、跨平台的企业应用程序。J2EE技术大全...
# JNDI-Inject-Exploit ## 免责声明 本工具仅面向**合法授权的企业安全测试**,如您需测试本工具的可用性请自行搭建靶机环境,在使用本工具进行检测时,您应确保该行为符合当地的法律法规,并且已经取得了足够的...
【J2EE课程设计--网上书店.rar】是一个包含完整的J2EE项目实例,旨在帮助学习者理解和实践如何构建一个基于Java平台的企业级电子商务系统,即网上书店。J2EE(Java 2 Platform, Enterprise Edition)是Java技术在...
### 中间件与J2EE技术详解 #### J2EE技术概览 J2EE(Java 2 Platform, Enterprise Edition)是一种广泛应用于企业级应用程序开发的技术框架,它由Sun Microsystems提出并在2001年发布第一个版本。J2EE旨在简化企业...