我做了一个仿qq的程序,其中客户端需要登陆验证,刚开始想直接远程调用服务器的数据库,但是想想这样做好像很不安全。
有人知道应该怎么做的么?是应该调用服务器端的一个服务,然后那个服务去验证,最后返回一个结果么?
期待能有人给我就讲讲哎,最好能告诉我qq的大概实现原理。
多谢啦

解决方案 »

  1.   

    qq大概原理应该是这样
    腾讯服务器上运行了qq的服务端,我们的PC上装的是客户端,
    客户端要登录的话,把请求发给服务端,由服务端到数据库查询,把结果返回给客户端,
    注册、查找好友等等也是类似的
      

  2.   

    在服务器上暴露一个WebService 让客户端吧帐号密码(可以是hash过的密码或者公钥加密的密码)发到服务端,服务端返回验证结果。
      

  3.   

    对于你这个仿QQ程序,在登陆验证的核心是把你的注册ID以及你的PWD传给服务器,服务器数据库会在你第一次注册时记录你的个人信息,以备你之后登陆的校验。你登录的个人资料必须用加密算法加密,在.NET一般加密应用引用System.Security.Cryptography这个空间,这个命名空间提供加密服务,包括安全的数据编码和解码,以及许多其他操作,例如散列法、随机数字生成和消息身份验证。你用MD5算法加密就可以了。我想LZ对加密要求也不至于苛刻到要引用第三方加密控件吧。以上是对于加密本身方面的一些东东,对于加密实现有几个思路。可以在客户端也可以在服务器端,不清楚LZ是准备走哪条路子。按照LZ说说估计是准备将加密功能做成一个web服务部署在网络上的一台服务器上,用的时候在网络通的情况下直接调web服务就好了。楼上几个弟兄说的是QQ大概的套路,具体恐怕得腾讯技术人员才知道。这个涉及到行业机密,不好说得太清楚。推荐这web服务一种,一劳永逸,也便于改动。
      

  4.   

    UP帐号密码一起发到服务端,验证就这样,不要在客服端直接执行服务端的SQL语句!
    也就是BS结构!
      

  5.   

    [Quote=引用 12 楼 beckfun 的回复:]
    引用 1 楼 yangqidong 的回复:
    qq大概原理应该是这样
    腾讯服务器上运行了qq的服务端,我们的PC上装的是客户端,
    客户端要登录的话,把请求发给服务端,由服务端到数据库查询,把结果返回给客户端,
    注册、查找好友等等也是类似的
    UP帐号密码一起发到服务端,验证就这样,不要在客服端直接执行服务端的SQL语句!
    也就是BS结构!
    [/Quote打快了,应该是CS结构。呵呵,不好意思!
      

  6.   

    多谢楼上诸位.....
    那诸位所讲的客户端调用webservice是最容易实现的方式么?我现在对于加密暂时没什么要求,先实现功能再说。
    webservice的大概实现能有人讲一下么?多谢啦。
    搞定了给大家散分啊
      

  7.   

    你可以看看MSDN上WEBSERVICE的教程,入门不难。
      

  8.   


    你用google或者baidu一搜一大片,另外可以装个MSDN。其实很多答案一搜就出来。只有自己才知道自己需要的是什么,人家只能给你一个方向。一搜就有的概念性的东西也帮你贴出来对你水平也没有提高,你说是不是?可以遇到某个具体的知识难点再发问,我觉得这样比较妥当。
      

  9.   

    那效率多低,自己写服务端,用socket通讯
      

  10.   

    写简单的web service还是比较简单的。
    创建一个web service project然后写一些要暴露给客户端的方法
    在你当前项目中添加这个web servecie的引用,然后创建一个本地代理类就可以调用web service方法了。