Delphi编写网络程序的安全措施

原创 2001年09月05日 17:34:00

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

Else

Result:=false;

要注意的是,在服务器程序和客户程序中,StrKey均应定义为全程变量。

为了防止客户资料表被程序外打开从而泄露密码,可以对客户资料进行一定的加密措施,例如PARADOX表可以添加Password,服务器程序在访问客户资料表时先提供该Password。

三、 数据传送

在网络程序中,一些敏感数据在网上传送时必须加密。Delphi的MIDAS机制提供了数据加密的途径,可以在数据传往客户端之前对一些字段进行加密,也可以在接收到客户端的更新数据请求后对来自客户端的数据的相应字段进行解密后才向数据库进行更新。为了达到些目的,可以在服务器程序的远程数据模块中加入一个Tprovider或是TdataSetProvider对象,并将此对象的DataSet属性置为要处理的数据集。在Tprovider的OnGetData事件中加入如下代码:

with DataSet do

begin

while not EOF do

begin

Edit;

SensitiveData.AsString :=

Ency(SensitiveData.AsString

strKey);

{对敏感数据加密}

Post;

Next;

end;

end;

以上代码可以将敏感数据加密后再送往客户程序。

同样,在Tprovider的OnUpdateData事件中加入一些处理代码便可对客户端送来的数据进行解密。

以上只是介绍了网络程序安全措施实现的一般原理,在此基础上,可以增加其它保密措施,以达到更好的保密效果。例如,客户程序可以用特定的辅助硬件设备来增加安全性。在智能卡应用程序中,客户程序在登录时不仅要求用户输入用户名和密码,程序同时检查IC读写器中IC卡的类型及特定的内容,这样,既使密码泄露了不会被人冒名登录。当然,任何安全措施都不是绝对安全的,安全措施还要有严格的保密制度及使用人员的高度的保密意识才能真正起到保密作用。

IMS基本概念之 安全服务和安全机制

3.6 IMS中的安全服务本节打算解释IMS网络怎么实现安全。这里故意不深入到密码学中,因此也不会深入的介绍算法和密钥长度,同样也不会对IMS的安全进行密码学分析。有其它的更好的书专门会介绍这些方面。...
  • foolskindom
  • foolskindom
  • 2009年12月17日 22:13
  • 4485

用Delphi编写CGI程序(一)

用Delphi编写CGI程序(一)   1.0 、 CGI 程 序 的 功 能:     首 先, 什 么 是 公 共 网 关 接 口( CGI ) 呢? CGI 是 一 个 用 于 定 义 WEB ...
  • zou5655
  • zou5655
  • 2001年07月30日 19:29
  • 750

delphi7第一个程序helloword

delphi使用pascal语言,因此要学习delphi需要首先了解pascal语言。对于pascal语言还不熟悉的人,可以去免费下载pascal精要:http://download.csdn.net...
  • sushengmiyan
  • sushengmiyan
  • 2012年03月13日 11:23
  • 3075

网站前置审批--网络与信息安全保障措施

网络与信息的安全不仅关系到正常业务的开展,还将影响到国家的安全、社会的稳定。***医院将认真开展网络与信息安全工作,通过检查进一步明确安全责任,建立健全的管理制度,落实技术防范措施,保证必要的经费和条...
  • liuyunfan
  • liuyunfan
  • 2011年12月21日 11:00
  • 1787

Delphi实现程序自销毁(自杀)

unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialo...
  • sibang
  • sibang
  • 2014年08月21日 16:37
  • 644

截取指定程序的网络封包fordelphi hook api

有时候我们需要对其它应用程序发送和接收的网络数据进行拦截,比如要对IE发送的HTTP头进行分析,得到请求的地址等.这次我们可以用一些例如WPE, Sniffer之类的工具来达到目的.但是工具功能有限,...
  • zblue78
  • zblue78
  • 2007年05月28日 15:08
  • 2230

一个简单的DELPHI程序注册码设计 .

当你辛辛苦苦用DELPHI做好了一个你认为十分不错的程序,你是否想把它发布出去成为共享软件呢  做为一个共享软件,注册码肯定是少不了的,你可以通过判断程序是否注册来进行功能,时间或一些其它限制.现在就...
  • u013408061
  • u013408061
  • 2017年04月19日 10:34
  • 682

Java高级编程-网络编程详解 (2)

TCP/IP服务器与客户端套接字    套接字(Socket)是由伯克利大学首创的。它允许程序把网络连接当成一个流,可以向这个流写字节,也可以从这个流读取字节。套接字为程序员屏蔽了网络的底层细节,例如...
  • lifeng_2009
  • lifeng_2009
  • 2010年04月07日 17:31
  • 1974

delphi编写系统托盘程序

编写系统托盘程序 1.新建一个工程,在Form1中添加一个Button按钮和一个P...
  • bitman_76
  • bitman_76
  • 2008年04月18日 21:40
  • 381

使用delphi编写按键自动点击的小程序

unit post_virkey; interface uses   Windows, Messages, SysUtils, Variants, Classes, Graphi...
  • zui130
  • zui130
  • 2018年01月11日 16:51
  • 60
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Delphi编写网络程序的安全措施
举报原因:
原因补充:

(最多只允许输入30个字)