基于SQLServer2000的C/S系统,通过master系统进程表控制客户端站点数量可行不?
基于SQLServer2000的C/S系统,通过master系统进程表控制客户端站点数量可行不?
就是利用master库里面的sysprocesses表,来检测连接我用哪个数据库的连接数量,当然筛选排除系统进行,只是一般的用户进程,当然查询分析器也带在内。
这里不讨论这个查询表查询出的连接数量是否正确可靠也不讨论软件本身被Patch,只讨论这种方式控制站点数量,容易被别人从数据库方面动手脚破解这个站点数量限制不?因为别人很容易可以跟踪分析出软件发的SQL命令,从而知道软件是这样的方式来判断站点数量的?
[解决办法]
每次登录、登出,都在一个session表里维护,只要跟踪这个表所记录的当前登录用户数就行了
当然,如果服务端就在用户那里,他们要做手脚也很难防
通过sysprocesses,也一样很难防
[解决办法]
按你的作法,个人认为从数据库方面动手脚的可能性不是很大!
还可以搞双重方法判断 ,如再在你的数据库中再那一个表存储登录用户数,数据加密存放,连接时两处都检查一下!
但要有思想准备,世上无难事,只要有心人!
[解决办法]
如果是SQL2K的话,最简单的方法就是在程序中执行SQL语句时加-password,这样SQL Profiler就跟踪不到加密的SQL语句了~
不过最好还是用LS的方法,一般都是这么做的
[解决办法]
有这样一种方法,用户登录后,可以建立一个临时表。因为是临时表,所以当用户退出或断线的时候,临时表会自动删除。
[解决办法]
可以专门做个服务器点,用于站点授权!每个登陆的客户端先经过服务器验证
验证通过在登陆到数据程序,否则就不通过
[解决办法]
一般好的系统,都用中间层来控制站点数。比如金碟。
[解决办法]
這東西很多早期愛用一個偽三層去做的,一個中間層只來提供一個連接參數,客戶端與他保持一個TCP/IP的連接,到一定數量就斷開。
[解决办法]
最好用SOCKET。