如何在Applet小应用程序中,写一个数据库连接呢?
例如:
public class TestApplet extends JApplet {
Connection con = null;
public void init() {
con = DriverManager.getConnection(url,name,password);
}
}
如果是这样的话,客户端下载这个class文件,反编译一下,就可以知道我的数据库连接了,又没有什么好的办法解决呢,
例如:
public class TestApplet extends JApplet {
Connection con = null;
public void init() {
con = DriverManager.getConnection(url,name,password);
}
}
如果是这样的话,客户端下载这个class文件,反编译一下,就可以知道我的数据库连接了,又没有什么好的办法解决呢,
<PARAM NAME="dburl" VALUE="<%=url%>">
getParameter("dburl");
是这个道理吧。
如果要想在applet里彻底避免,那就得不能出现任何连接数据库所需的这些信息
还有一个方法,可能麻烦点,但是可以解决你这个问题:
用applet和后台的servlet进行通信,由servlet来负责传送过来这些信息,这样的话,那就任何人都看不到这些重要信息了
的意思是不是说些个servlet向服务器请求用户密码信息,然后服务器给发回来?可如果我用一个http sniffer仍然可以看到服务器传回来的数据呀。。确实是个问题哦。
Mr_IT(中国人)的方法正解!sniffer看不到 hehe~~
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
StringBuffer sb=new StringBuffer("<message>");
response.setContentType("text/xml");
response.setHeader("Cache-Control", "no-cache");
sb.append("<data>LiaoNing</data><data>ShenYang</data>");
sb.append("</message>");
PrintWriter out=response.getWriter();
out.write(sb.toString());
out.close();
}
}
这是applet中所需的主要部分的代码(把servlet传过来的数据进行接收即可):
URL url = new URL(getCodeBase(), "servlet");
URLConnection con = url.openConnection();
InputStream in = con.getInputStream();
还有两个方法你可以试一下:
1>编译java文件的时候用java混淆器进行编译,相当于进行了一次加密,反编译出源码应该就有点难度了
2>applet中与数据库建立连接目的不就是为了获取数据库中的数据吗,如果数据量小的话你可以直接把这些数据以参数形式传入applet;如果数据量大的话,你可以直接通过后台的servlet把所需数据以xml格式传送到applet中进行解析即可
不过这个还是有风险。
这样你看行不行:
URL url = new URL(getCodeBase(), "servlet?loginName=用户名");
URLConnection con = url.openConnection();
InputStream is = con.getInputStream();
byte[] password = new byte[1024];
is.read(password);servlet代码
class servlet extends HttpServlet {
Connection con = null;
init() {
con = DriverManager.getConnection(url,name,password);
}
doGet() {
String password = getPassword(loginName);
out.println(password);
}
}
这样的话,客户端是不是就不知道数据库连接了呢?
你连接数据库应该在client这边连接的。也就是你这边的applet的connection,你上面的代码确是使用了server端的连接!你这还等于是使用了传统的b/s结构啊。
另外只要你把账户密码在doGet或者doPost方法里面传送到客户端,嘿嘿,还都是可以侦测到的
既然不想让人得到任何关于数据库连接的信息,为什么非要在applet中建立数据库连接呢?说句实话,这样确实还是比较危险的一种操作方式,你完全可以把你需要的数据通过后台servlet与数据库建立连接获取然后传到applet中进行应用
不能换个思路用JSP么?
是传统的bs。可是我想不出别的方法了,叫客户端看不到连接数据库的代码了。
我要做一个黑屏,类似于dos的。
可以用java的socket来写一个服务器端开一个端口,然后再写一个客户端和这个服务器端进行连接
的意思是不是说些个servlet向服务器请求用户密码信息,然后服务器给发回来?可如果我用一个http sniffer仍然可以看到服务器传回来的数据呀。。确实是个问题哦。
路过顶一下