100分,关于三层的(100分)

  • 主题发起人 主题发起人 t123
  • 开始时间 开始时间
T

t123

Unregistered / Unconfirmed
GUEST, unregistred user!
在三层结构中,客户端要用sockt连接:
一般来讲,用delphi作的应用服务器,只要知到应用服务器的ip地址,任何delphi开发环境
都可以连接到应用服务器上,如何能限制未经授权的客户端连接我的应用服务器,只让我开
发的程序能连上应用服务器?
我知道可以通过改变port值(不用211)来作,还有没有更好的方法?
 
只有当client知道你的server的guid值才可能连上吧? 只连到中间层能做什么?
 
我想这实际上有两方面的问题:
1、未经授权的用户使用你的应用服务器提供的接口。这容易解决,一般别人不知道你的接口
连上了也没用。但问题时,连上了就要占用你的服务端资源。
2、不允许连接服务器,也就是说,未授权用户连基本的连接都无法建立。dcom比较容易实现,
但配置很麻烦,而且好像效率比较差。如果使用socket,除了改端口号外,还可以在服务端
的连接建立事件中写一段代码,要求从客户端代码中通过参数传递认证密码,如果没有通过
认证就直接断开连接。
 
比如说我的中间层中提供一个provider连接的是一个query控件,对数据库的连接是在应用
服务器中完成的,那么客户端只要知道我的应用服务器的地址,然后选择servername就可以
了,它就可以通过这个query查询了,不需要知道数据库的用户名和口令,这种情况我不想
发生。
forest gun,能说说“服务端的连接建立事件”指的是哪个事件吗?是数据库连接的事件
吗?如果是,我认为不是最好的方法。
 
可以在数据库中设置一个表,吧你要注册的计算机加到其中,每次客户端连接时
若没有注册,拒绝连接
 
wcwcw:我做的是一个internet应用,是广域的,不能这么控制,
我只想作到除了我的程序,其他的都不能连接我的应用服务器,
也不能访问应用服务器所提供的接口。
还有什么好办法?
 
如果你用socket的话,最好自己作那个socket server,你可以在服务器端验证ip,如果非法
ip连接,你就主动断开就可以了.
当然,我觉的你的数据库验证机制不够好,否则你应该对每个客户端登陆时要求它发送客户登陆
账号和密码.
完全开放的话肯定会带来负面的问题.
如果用dcom的话,原本dcom就有验证机制,你可以好好看看它的资料,完全可以设置访问范围.
 
是否可以考虑修改scktsrvr.exe的源代码 (在source/vcl目录下),
加上你的控制?
 
谢谢大家,我再想想!
 
后退
顶部