jndi 简单的说就是 把一种功能服务,用另一种方式表现出来,这种方式就是jndi。
举个例子。
我想要获取 磁盘上的 一个文件,假如说是“C:/aaa.txt”
正常的情况下我就要
File file =new File("C:/aaa.txt");
这样我就得到了文件对象,然后对干对象进行操作。
然而还可以使用 jndi来实现这种功能,
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContextFactory");
Context ctx = new InitialContext(env);
(以上3句可以这样写,其实这个部分就是启动jndi服务)
System.setProperty(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContextFactory");
Context ctx = new InitialContext();
---------------------------------------------------------------------------------------------------------------------------------------
接下来
Object obj = ctx.lookup(“C:/aaa.txt”);
File file = (File)obj;
这样也获取了这个文件对像。
jndi配置数据源:
在applicationContext.xml(spring配置文件)文件中:
<jee:jndi-lookup id="dataSource" jndi-name="java:comp/env/jdbc/wydb" />
在web.xml文件中:
<resource-ref >
<description></description>
<res-ref-name>jdbc/wydb</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
在(tomcat)sever.xml中:
<Context docBase="eWeb" path="/neweb" reloadable="true" source="org.eclipse.jst.j2ee.server:eWeb">
<Resource name="jdbc/wydb" auth="Container" type="javax.sql.DataSource" username="EUSER" password="EUSER" driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@192.168.1.130:1521:devdb" maxActive="8" maxIdle="4" factory="org.apache.commons.dbcp.BasicDataSourceFactory" />
</Context>
个人总结
优点:例如在websphere(类似tomcat)加上数据库连接的配置就更安全
缺点:在开发时不易用此配置方法,在用cvs将程序下载到本地时任然需要配置,繁琐了些;但是在发布的时候可以用。
在java中也可以通过它来获取想要的资源:
public DBConnection() {
try {
Context ctx = new InitialContext();
if (ctx == null) throw new Exception("No Context");
DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/oracle");
if (ds == null) throw new Exception("jdbc/oracle is an unknown DataSource");
conn = ds.getConnection();
stmt = conn.createStatement();
} catch (Exception e) {
System.out.println("naming:" + e.getMessage());
}
}
分享到:
相关推荐
$ 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 asm jndi_JNDI-Injection-Exploit,用于log4j2漏洞验证 可执行程序为jar包,在命令行中运行以下命令: $ java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar [-C] [command] [-A] [address] 其中: -C ...
JNDI-Injection-Exploit-1.0-SNAPSHOT-all
JNDI-Injection-Exploit-1.0-SNAPSHOT-all.zip
# JNDI-Inject-Exploit ## 免责声明 本工具仅面向**合法授权的企业安全测试**,如您需测试本工具的可用性请自行搭建靶机环境,在使用本工具进行检测时,您应确保该行为符合当地的法律法规,并且已经取得了足够的...
在JAVA编程中对JNDI的支持.是一个开放的源码.
自用CVE-2018-3191 weblogic反序列化exp。
JNDI注入漏洞 描述 JNDI-Injection-Exploit是用于生成可用的JNDI链接并通过启动RMI服务器,... 我们可以用JNDI-Injection-Exploit生成的链接替换“ rmi://127.0.0.1:1099 / Object”,以测试漏洞。 免责声明 所有信
ndi1..2.1所需要的jar,1,。2.1
JNDI服务利用工具 RMI/LDAP,支持部分场景回显、内存shell,高版本JDK场景下利用等,fastjson rce命令执行,log4j rce命令执行 漏洞检测辅助工具
spring获取weblogic jndi数据源的两种方式,一种本地weblogic server获取,无需用户名、密码、IP和端口等;另一种为从其他weblogic server获取,则必须申明用户名、密码、IP和端口
NULL 博文链接:https://zzy603.iteye.com/blog/1039826
如果有人事先将另一台机器上的磁盘驱动器接到用户的机器上,用户在使用的时候根本就分辨不出现在的驱动器是存在本端,还是在另一端的机器上,用户只需取得资源来用,根本就不知道资源在什么地方。
标签:apacheds-server-jndi-1.0.1.jar.zip,apacheds,server,jndi,1.0.1,jar.zip包下载,依赖包
jta-1.0.1b.jar、connector-1.0.jar、jndi-1.2.1.jar 用处在此不多说了
春天jndi查找 如何使用Spring从JNDI查找数据源 Server.xml <... maxActive="100" maxIdle="20" minIdle="5" ...jee:jndi-lookup id =“ dataSource” jndi-name =“ jdbc / javatechie” Expected
jdni的两个jar包:fscontext.jar,providerutil.jar。主要用于jdni的开发。
jar包,官方版本,自测可用
jar包,官方版本,自测可用