有关三层应用的安全性问题!(200分)

  • 主题发起人 主题发起人 smj_9547
  • 开始时间 开始时间
S

smj_9547

Unregistered / Unconfirmed
GUEST, unregistred user!
在三层应用的开发中我发现这样几个问题。
1、[?]在Delphi的例子中有一个login的demos但是,如何主动地与不符合规定的client断开
连接呢?
2、[?]如何实现某些用户登陆的权限不同呢?而现在很多人的三层都是放几个Dataset,几个
provider,然后在client端写sql 语句,但是我感觉这种不是很好。不知道有没有更好
的解决办法呢?
 
1 你可以对login的参数进行加密解密,同时在login时传递一个版本信息,以区别是不是规定的clinet;
2 如果是COM+,有比较完善的安全设置,同时可以通过角色辨别来给于不同的权限。SQL语句最好不要写在客户端,否则确实不安全。
 
用mts,安全控制做的很好
 
如果采用TDCOMConnection,就不存在非法的客户端可以连上应用服务器,调用组件方法的
情况,这就是TDCOMConnection比TSocketConnection安全性高的一个方面。当然,如果采用
TSocketConnection,仍可以采用Intercept对数据注进行加密/压缩,从而避免非法的客户
调用组件。
服务器不应该为了验证客户是否有效而保存客户端状态,这将与COM/DCOM的无状态服务器原
则相左。要实现有状态服务器不但很复杂,而且会导致不能服务更多的客户端。从这一原则
来说,实现不同用户拥有不能权限应该在客户端控制,服务器端应该是相对开放的。
 
2. 可以考虑在中间层加入其它组件,用来封装数据存取(就是业务逻辑对象)。
 
在中間層增加安全業務邏輯,
客戶端不主動連接,所有的可用連接都由服務端傳給客戶端.
或者所有的dataset都由服務端做好了傳回來,insert,update等的工作也由服務端來做
當然最好客戶端不直接用dataset,(也就是說客戶端根本不要甚麼dataset),服務端以某種方式
例如:數組,集合,把數據傳給客戶端,客戶端處理好後,再返回給服務端,
總而言之,客戶端應該只處理介面
注:我所說的服務端可能就是你所說的中間層
 
客户端登录时除了加密传输的数据外,是不是可以考虑传送客户端标识(非法标识者拒不接受),以加强安全
 
同意樓上,相當於記錄session.
 
foresail,PeaceDove,billy_zh:能否给出一个EXAMPLE?请恕小弟比较愚钝哦!非常感谢!
 
抱歉delphi俺不會,:-)
 
foresail,你会的是哪中工具的将代码帖出来我看看!
 
要是貼代碼就太複雜了,也太偏重於細節
貼個USECASE你看看還差不多
可惜分不夠,呵呵
 
当然了,如果你的资料有用的话我自然会再单独给你200
 
這邊能UPLOAD圖嗎?
豁出去了,給你寫一段偽碼.
1.我們先搭個框架,準備以下對象.
1)通訊對象---解決底層通訊
2)數據解析對象---用於從數據包中分離出對象(可以自己定義一系列規則)
3)業務對象---比如:單據對象,人員,部門著一類的
4)安全對象---包含客戶段一系列資料的對象
5)數據訪問對象---業務層專門和數據庫打交道(不是指ADO)
2.DFD
客戶端查詢數據流程:數據庫->數據訪問對象->業務對象->數具解析對象->中間層通訊對象->客戶端通訊對象
->數具解析對象->業務對象->客戶程序->介面
數據更新流程:介面->客戶程序->業務對象+安全對象->數具解析對象->客戶端通訊對象->中間層通訊對象->
數具解析對象->安全對象->業務對象->數據訪問對象->數據庫
我寫這麼多可以了吧?
別讓我教你怎麼寫SOCKET程序,怎麼訪問數據庫喔!
 
我的這種做法客戶端根本不用DATASET的,
而且跨平台.
 
foresail,看你这种做法呢好象是彻底没有跟midas有关系了,而是自己从socket方面的编程
和系统方面的设计了!以前我也有这种想法的,但是呢我有想用回midas这种东西!所以才有
这些问题的出现哦!谢谢你!写的不错!
 
呵,
好就给分啊![:)]
 
你没听说midas是很老的技术,已经过时了吗?
这是李维说的。
 
foresail再等等,听听各家的意见。这样也有好处!
 
多人接受答案了。
 
后退
顶部