标题:vb 如何远程判断用户名密码?
只看楼主
lw7124168
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-2-21
结帖率:50%
已结贴  问题点数:10 回复次数:4 
vb 如何远程判断用户名密码?
VB + mysql数据库 做一个登录界面 是C/S 模式  我的服务端已经打开 但是只能实现本地验证 如何实现远程验证呢?
搜索更多相关主题的帖子: 用户名 数据库 服务端 mysql 密码 
2015-03-16 12:18
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:10 
你本地验证是怎么验证的?

C/S 模式,那说明远程有一个 server ,你验证时,也照样把 数据加密后发给 远程 ,远程成功与否,都返回标志。
然后记录 客户端状态就是了。这个网络连接,在 使用过程中一直不断,如果中断,就自动重新验证就是了。
或者分配一个 加密索引值,该值仅存在于内存,与IP地址配套,每个指令都需要带这个 加密索引值,这种验证也行,可以使用于 网络中断重连。
HTTP原理就与这个差不多,使用提 COOKIE 而以。

授人于鱼,不如授人于渔
早已停用QQ了
2015-03-16 12:35
lw7124168
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-2-21
得分:0 
server的代码
程序代码:
Private Gac() As Boolean
Dim Socknumber As Integer
Private Sub Form_Load()
   Winsock1(0).LocalPort = 1600
   Winsock1(0).Listen
   Socknumber = 0
End Sub

Private Sub Form_Unload(Cancel As Integer)
   Winsock1(0).Close
End Sub

Private Sub Winsock1_Close(Index As Integer)
   Winsock1(Index).Close
   Unload Winsock1(Index)
   Gac(Index) = False
   Text1.Text = Int(Text1.Text) - 1
End Sub

Private Sub Winsock1_ConnectionRequest(Index As Integer, ByVal requestID As Long)
   Socknumber = Socknumber + 1
   
   Load Winsock1(Socknumber)
   Winsock1(Socknumber).Accept requestID
   ReDim Preserve Gac(Socknumber)
   Gac(Socknumber) = True
   Text1.Text = Int(Text1.Text) + 1
End Sub

Private Sub Winsock1_DataArrival(Index As Integer, ByVal bytesTotal As Long)
   Dim c As String
   Winsock1(Index).GetData c, vbString
   Dim i As Integer
   For i = 1 To UBound(Gac)
     If Not i = Index Then
      If Gac(i) Then
         Winsock1(i).SendData c
       DoEvents
      End If
     End If
   Next i
   
   
End Sub

server 好像只是添加了在线人数的统计 你的意思是在把用户名密码发送到server 进行验证? 小弟很菜...求帮助
2015-03-16 13:25
lw7124168
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-2-21
得分:0 
回复 2楼 风吹过b
我在登录界面上 用
程序代码:
  cn.Open "DRIVER={MySQL ODBC 5.3 Unicode Driver};" & _
    "SERVER=192.168.191.4;" & _
    "DATABASE=data;" & _
    "UID=root;" & _
    "PASSWORD=root;" & _
   "OPTION=3"
本机测试 是连接上了 但是 用别的机器 就显示 未发现数据源名称
2015-03-16 13:31
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:0 
吐血。

C/S 模型,S 完全所有的数据处理,C 仅显示数据。
所以,C中不存在 数据连接情况。 类似的还有 B/S 结构。

好吧,我写个流程出来。

客户端
启动,连接服务器,如连接失败,提示,退出。
登录,确定后,加密,然后发给服务器验证。若服务器验证失败次数超过,退出。
服务器验证成功,生成一个加密KEY,建议 8个 或 16个字节,甚至更加的附加数据 。发给客户端。

客户端操作,查表和更新数据,删除数据,针对 这几种情况分别定义结构体和发送函数。
结构体可以使用定长数据,处理更简单。也可以使用变长数据,更不容易被解密。还可以使用符号分隔的数据。
客户端每一步操作,都转换成相应的结构体,然后按字节流发给服务器端,服务器端解析后,针对这个进行处理,生成结构体发给客户端。

按分隔符定义结构体
1、结构体定义
ID as byte       '序号,流水号,凡流水号未连接的情况下,当作正在破解,服务端中断连接。以整数保存或以数字保存,示例里以 数字保存可以看到整数
KEY as string * 16   '标识符
TEXT as string       '内容

加密,最简单的方法,用标识符与内容进行 XOR 。
如登录封包(手打,未对内容进行加密。
#1LOGLOGLOGLOGLOGLSelect * where name='sa' and pass='abc';#
这个封包里,
#,封包头和封包尾。
1  流水号
LOGLOGLOGLOGLOGL  登录命令符,这个是固定
Select * where name='sa' and pass='abc';  查询命令,当服务器收到这条命令后,就会去查表,然后返回结果。如果固定的情况下,这条命令也可以使用自定义格式。
如  sa$ +  MD5(sa$abc) 两段组成。服务器查询 sa 的密码,然后再 MD5 加密运算,与后面这部分比较,如果相同,返回真,如果不同,返回假。

如登陆成功,服务器返回的封包可以这样的。
#1KEYKEYKEYKEYKEYKABCDEFGHIJKL#
1 对应流水号,如果流水号不对,中断连接。
KEYKEYKEYKEYKEYK   返回给客户端的,说明这个是KEY,按前面的要求,16位
ABCDEFGHIJKL1234   告诉客户端,以后使用这个KEY通迅,而不再使用固定的KEY了。

如客户端要求查 A1 表。第二页,每页15条记录。
#2ABCDEFGHIJKL1234select * from A1;$2$15#
2  流水号
ABCDEFGHIJKL1234  客户端的加密KEY
select * from A1;$2$15  这段需要加密,这里是示例不加了。
查询表命令,以$表示后面有几个参数,如,第1个:第几页;第2个:每页几条记录;第3个:.... ,这个你自己规定。

服务器端返回。如这个表有二个字段,分别是 T1,T2,如
#2ABCDEFGHIJKL1234T1^T2$A1^B1$A2^B2$.....#
2  流水号
ABCDEFGHIJKL1234  KEY
T1^T2$A1^B1$A2^B2$.....  数据
T1^T2    字段标题 列表。这里有二个字段,可以拆出二个来。
A1^B1    第一条记录的数据,也可以拆出二个来的。
。。。。。

重点:
想个好的封包模式,实在想不出,就使用 B/S 模式 也是不错的。
要求:1、安全性。确保任何密码不能在网络上传传输,需要传的时候一定要使用不可逆加密。
      数据,都要使用 可逆加密 进行加密,可以使用公开算法,也可以使用你自定义的加密。加密用的KEY,可以固定的,也可以每次连接协商。
      2、数据流的简洁化。不要过多的增加数据。如要求1条记录,那么只传1条记录,而不管具体有多少条记录。整体查询时,使用分页进行传输。
---------------------------------------------------------

以前是根据以前的经验,临时写的,如有不对之处,请略过。
现在基本上没时间去写代码了。

授人于鱼,不如授人于渔
早已停用QQ了
2015-03-16 16:25



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-442695-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.205079 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved