请教一个DataSnap的问题,那位高手帮忙指点一下:
    datasnap如何获取客户端的请求报文,是这样,我希望将Datasnap做得更安全一些,希望在TDSTCPServerTransport或TDSAuthenticationManager的阶段就将非法连接过滤掉,最多到TDSServer的onConnect将非法连接过滤掉。但发现能获取的客户端信息都不一样。
    TDSTCPServerTransport(Event: TDSTCPConnectEventObject),TDSAuthenticationManager只有(const Protocol, Context, User, Password: string)几个信息,且Context是空的。TDSServer.onConnecte(DSConnectEventObject: TDSConnectEventObject),三个地方获得的信息都不一样。我想应该是DataSnap在第一时间就把非法连接拦掉,按DataSnap的连接顺序,对于tcp/ip协议,先过TDSTCPServerTransport->TDSAuthenticationManager->TDSServer,而Http协议则直接到TDSAuthenticationManager->TDSServer,那么在TDSAuthenticationManager至少应拿到客户端的IP地址吧,最好是全部报文。
     那位有办法,或者有其他保证安全的方式,请指教。

解决方案 »

  1.   

    DataSnap 服务器与客户端,是建立在GUID编码一致,才能建立连接。因此,基本不存在,非法客户端的接入。 
    所以,确保安全的连接:
    1、非正确的GUID码,是不能建立连接的;(第一层安全)
    2、确认 登录人的合法性。实现这一占,首先要能登录进入服务器,录入上传用户名、SN,比较数据库后,才能进入系统。(第二层安全)
    3、在数据库一个表,录入一系列“用户名”和“SN”,登录时,通过比对,确定该用户是否可以进入,以及它的权限。(第三层安全)
    4、为了加强安全性,可以通过IP地址或网卡地址和用户名SN的双重检修,前提是登录后上传,IP地址、网卡地址和用户名、SN。你说的通过onConnect将非法连接过滤掉,未见过。