delphi三层中如何解决不明客户端对应用服务器的非授权访问

yrmljx 2008-07-27 10:33:47
delphi三层中如何解决不明客户端对应用服务器的非授权访问
也就是别人知道了我的服务器的ip和端口号
就可以使用应用服务器了
一方面加重负担
另一方有安全隐患

比方说数据库是mysql
应用服务器用的是adoconnection+adotable+datasetprovider
客户端socketconnection+clientdataset+datasource+dbgird显示内容

delphi自带的demo哪个没看太懂
希望各位高手给予指教

谢谢
...全文
201 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
yrmljx 2008-08-04
  • 打赏
  • 举报
回复
非常感谢各位
但是由于我水平低,所说的方法
还是不知道具体怎么写
希望有源代码的例子

如果哪位有方便的例子的话
请发到
tosunmoon@163.com

再次表示谢谢
jasonke 2008-08-04
  • 打赏
  • 举报
回复
我目前是这样做的:
不使用dcom方式
自己开发基于iocp的tcp控件
将delphi的scktsrvr.exe(有源码)融合进自己的exe中,这样,放一个sockconnect控件,在uses SConnect, yourConnect,这样就搞定了

由于tcp我有自己的封包和断线超时逻辑,于是很多功能与SConnect中的delphi socket代码不太一样了,这样的好处就是很多底层的加密、验证都经过我自己的封包,哈哈,我只用了3天就搞定了,这个方法,不需要重编控件,但要重写TSocketConnect, 有难度,好处就是调试时,还是可以用delphi的TDcomConnect, 很方便呀

其实,要求时间快,可以这样:
加个login的dcom接口,再在as_getrecord、as_execute之类的所有 com接口中,验证是否登陆,自己写的其它dcom接口都要验证一下

还有种方法就是:
加个中间层,拦截tcp流,再在流的头上添加一条登陆验证数据,这样不需要有较大改动,但需要你对tcp通讯有了解

最后一种方法:
换三层为ASTA或remObj, midas只是技术过渡产品,但开发比较之非常方便得手,换的时间可能会很长,新技术要求更高

我选择第一种的目的是,因为我自己开发了一套成熟稳定的iocp控件,而且我习惯midas了,开发方便,
另外,delphi自己的midas断线重连做得不好,还会报错,我也解决了,需要在connect断线后,手动去关一下connect := false,这样clientdataset再操作时,会自动再连

NicolasCage 2008-08-04
  • 打赏
  • 举报
回复
1.在中间服务器端写个接口吧,上来验证一下,写到_TLB.PAS里面
2.防火墙过滤掉非法的ip和MAC地址也行。
ppdjl 2008-08-04
  • 打赏
  • 举报
回复
客户端连接的时候,要求发密码过去,要不服务端就不连接数据库。
yrmljx 2008-07-30
  • 打赏
  • 举报
回复
希望会的都发言哦
yrmljx 2008-07-29
  • 打赏
  • 举报
回复
关键是有好多客户端的
怎么只是不连接这个验证不通过的呢
zhuchengchuan 请问具体怎么写,加到那儿控制啊?
谢谢
zhuchengchuan 2008-07-29
  • 打赏
  • 举报
回复
在服务器端增加一个验证的函数,如果验证是无效的用户,就不要连接数据库.我是这样做的,不知道其他人用的是什么方法.
yrmljx 2008-07-29
  • 打赏
  • 举报
回复
?
yrmljx 2008-07-28
  • 打赏
  • 举报
回复
其他没人知道吗?
kugoo_2006 2008-07-28
  • 打赏
  • 举报
回复
delphi自带的demo 直接用就可以
通过GUID 可以防止别人知道服务器的ip和端口号后 使用应用服务器了
yrmljx 2008-07-28
  • 打赏
  • 举报
回复
kugoo_2006你好
没看明白你的意思
希望能再解释一下
谢谢了

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧