站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题要写一个C/S的程序,客户端发布以后,如何避免被用户破解连接SERVER数据库的信息。

要写一个C/S的程序,客户端发布以后,如何避免被用户破解连接SERVER数据库的信息。

摘要: 要写一个C/S的程序,客户端发布以后,如何避免被用户破解连接SERVER数据库的信息。


例如:在客户端里有JDBC配置的信息,或者JNDI的信息,CLASS文件很容易被反编译,看到这些信息。如果说数据库操作的代码运行在SERVER端,C/S架构里我咋么发出一个操作数据库的请求,并可以拿到相应的结果集。


你不应该把这些敏感的东西放到客户端去
而应该通过中间层来访问和控制数据库
你可以写一个程序在中间监听所有的连接
然后根据不同的连接处理不同的事件
这样就可以避免一些敏感的东西暴露在客户端


望球标准做法,及所涉及之相关技术。


1.用混淆器。
2.把数据库连接字串写在一个文件里面,使用加密算法加密。



你的架构有问题:
如果每个client端都要访问数据库,这个开销将是很恐怖的。
我做过类似的一个东东:
client和server端通过socket通讯。
server端负责访问数据库:当server端接到client的socket请求后,访问数据库,并返回结果,结果通过socket传给client。
这样就没你担心的苦恼了,也高效许多。

http://blog.csdn.net/lcllcl987/archive/2005/02/04/280743.aspx


client访问数据库干什么?我的完全放在了服务器端。想个好办法改写一下你的代码吧


楼上的思路不错,我们一个系统中间件用cics,通讯就是依靠socket, web上就没有数据库


上面几位都说明白了
1 架构有问题,更改架构
2 如果改代码的话,那么没有别的,就是混淆器和加密。


大家不用张嘴就说你架构有问题这种话了吧,我又没开始做,即使要做也是想到了这个问题拿出来讨论讨论而已嘛。我的提问内容很明白了,如果操作数据库的代码如果放在SERVER端,求标准做法及所涉及的技术。我没说我已经铁了心要用CLIENT直接访问数据库啊。


up


UP


C/S结构下可以考虑这样:
1.在服务器启动时,将一些使用率很高的数据,在服务器启动时,服务器读取出来,并放入Vector等对象中,在客户端向服务器提出相应的请求时,然后在Vector对象(对该Vector对象加锁,因为涉及到对它更新的操作,如果没有对该Vector对象进行更新操作,加锁就不需要了)中查寻,其实就是将数据库中的数据放到了服务器的缓存中,当然这样设计要考虑服务器的负荷问题。
2、客户端对数据库所有的操作,都以个人登录后,命令的形式提交到服务器,由服务器处理后,将结果返回给客户端,这样做应该是安全的。



三层模式


关键要看程序用途和使用对象,不要一概而论。
采用直连方式,对数据库连接信息采用des加密,应该还算安全。



多层构架


up


用Socket通讯


学习


学习


两层/三层都没有问题, 主要看你的需要. 但不论两层还是三层, 数据库访问密码最好不要写在代码里面, 可使用加密的配置文件, 使用混淆器进行编译, 降低给破译的可能.


赞同 TinyJimmy(Jimmy) !


↑返回目录
前一篇: -lt
后一篇: 刚学..JAVA ...不知道错在哪了...(分数转ABCDE级别)