我爱Aspx >> C#.Net >> Delphi编写网络程序的安全措施_Delphi教程
Delphi编写网络程序的安全措施
Delphi的MIDAS控件为编写网络程序提供了十分方便的手段。利用这些控件,可以编写局域网上的客户机/服务器体系程序,也能方便地在Internet上创建分散处理的应用。
网络程序的一个重要问题是安全性考虑。一些敏感数据在网上传送,很有可能被人非法拦截以造成不必要的损失。在实际的编程过程中,我采取了一些有效的防范措施,在此作些简单的介绍。
一、 原理
目前进行数据加密的方法很多,对数据的保护起到一定的作用。但如果采用固定的密钥或是密钥随数据一起传送,则均不能达到令人满意的保密效果。在实践过程中,我摸索出了一套“请求-应答”模式的随机密钥方法,对密码和数据的保密效果都令人十分满意。
当客户端程序启动并企图与服务器程序建立连接时,客户程序从服务器端取得一个由服务器程序产生的随机字串,系统将以此字串为密钥来传送用户登录密码和数据。由于密钥由服务器程序随机产生,客户每次登录时密钥均不相同,因此大大减少了密码被拦截导致数据被窃的可能性。
服务器端可以在远程数据模块中引出一个自定义接口,该接口返回一个随机字串。远程数据模块要记录该字串作为后续处理的密钥。随机字串的产生法可以多种多样,最简单的方法是用Random()函数产生一个随机数后再由此数用Format()函数或IntToStr()产生一个字符串。
二、 用户登录措施
为了防止程序被非法调试从而泄露密码,必须将客户的登录信息在服务器端处理,也可以专门增加一个安全层负责客户的登录。客户的登录信息储存在客户资料表中,包括用户名、密码、权限等信息。
客户程序登录时,先调用服务器程序的接口获得密钥字串,并用此密钥对用户输入的用户名和密码进行加密并向服务器发送登录信息。加密算法可以是DES算法或其它有效算法。服务器接到登录信息后,先用先前产生并记录的随机密钥对登录信息进行解密,再将解密后的信息与存储的客户资料表中的信息进行对照,从而判断客户信息是否合法以及该客户享有的数据权限等。
该过程的客户端程序如下:
strKey:=myRemoteSever.GetKey();
{调用服务器的接口获得随机密钥}
UserName:=Ency(strUserName
strKey);
{对用户名加密,Ency()为加密算法}
Password:=Ency(strPassword
strKey);
{对登录密码进行加密}
If myRemoteServer.LogIn(UserName
Password) then {登录}
Begin
{进行处理}
End;
服务器端的登录过程LogIn()如下:
strUserName:=DeEncy(UserName
strKey);
{对用户名解密,DeEncy()为解密算法}
strPassword:=DeEncy(Password
strKey);
{对登录密码解密}
{查询数据库}
if (Pass) then
Result:=true
Ҷƪл˵?
增强MIDAS的安全性_Delphi教程[04-28]
关于MIDAS的安全问题的解决方案_..[04-28]
集合类:VBA集合对象的安全包装_..[04-28]
PerlCGI程式写作常问问题集(4)安..[04-28]
学习一下.net framework 中有关安..[04-28]
ASP.NET基于角色的窗体安全认证机..[04-28]
ASP.NET应用程序安全性问题_ASP...[04-28]
web.config点滴:更改login控件对..[04-28]
ASP.NET2.0数据库之SQL Server安..[04-28]
将Oracle 10g内置的安全特性用于..[04-28]