单位开发一套管理系统(三层),一日,同事和我说,他可以自己编程来修该数据库(晕)他简单的加了几个控件,靠,真的连接到应用服务器端,而且可以任意修改数据!仔细想想

给我点分,快为零了,刚开始学习,实在无法解决太多的问题
 
请参见李维的《Delphi5.X分布式多层应用系统篇》第7-12(7-37页)。
 
看看socket server的property
有个Intercept GUID,这个是用来给程序员自己写加密或者压缩的
也就是说可以自己写个com元件,完成加密。
同样在TSocketConnection也有一个InterceptGUID属性
这样别人就不能随便访问你的sockerserver了
 
我说一点题外的。
首先你应该知道自己要实现的功能。
如果你做的系统是运行在一个局域网中,而且用户不会超过几百的话,应该做两层的,c/s
结构的。还有就是选用什么样的数据库。
(注:这都是我犯过的错)
 
用ProxyHunter在网上搜一下,搜到10几个211端口,用SocketConnection连接一下,竟然有80%
可以连上去!!!而且有的系统看样子还很大规模,而且数据好像也有些敏感!!
真不知道那些系统设计人员怎么想的,最起码把默认的211端口改一下也好啊!!
 
softdog,我想的和你一样,天知道这些人是怎么想的。
更离谱的是:有的SQL SERVER的SA密码居然为空。
 
服务器别给别人用,sql server的那个可以与别的机器连接的属性钩掉,不就行了
 
世上没有解决不了的问题,只有想不出的办法。[8D]
 
可以在事件中加入应用服务器的口令验证程序,如果应用服务器是MTS或COM+下面的,那么可以设定相应的权限就可以了.
 
加密,限ip.
 
利用用户身份确认的功能,以数据库的表格作为认证的数据来源,
以MTS为例:在MTS DATA MODULE中加入一个TADOQUERY对象,属性
如下:name:adoquery Connection:Adoconnection1
SQL:select count(*) from user where fname:=Username and
fpword:=Password 然后加入一个过程(mothod):CheckPassowrd
参数有:Username,Password.
procedure TMYmtsserver.CheckPassword(Username,Password:OleVariant)
begin
with adoquerydo
begin
parameters[0]:=Username;
parameters[1]:=Password;
active:=true;
end;
if adoquery.fields[0].asinteger<>1 then
raise Expection.Create('您输入的张好密码部队');
end;
 
其實我覺得你這個問題就是你的數據庫沒有加密碼,用的肯定是默認的用戶和密碼,這樣的
話,我想我們這裡的任何一個人都可以連到數據庫,更改數據啦。趕快加密碼啦!!!!
 
中间层在客户端登陆时根据其username 和 password 到 DB 中去查找,
如果存在该户头,才保持连接, 否则“喀嚓”...阿Q的头掉了.
 
靠,这贴的标题太长了,保存不了。
 
在Server端用linux+MySQL,然后linux设置好firewall过滤ip,MySQL设置好Admin密码。
在kylix下编写DataBase端。酷毕。困啊~~睡觉去。zzZ
 
哪儿可以访问啊,呵呵,要是服务器端没有provider,必须通过函数才能访问数据的话,只
要你不公布函数接口,谁能用你的数据?
 
简单点就用“WINNT/SYSTEM32/”目录下的DOCMCNFG.EXE设置一下您的应用程序服务器的访问
权限即可。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
顶部