说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

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

HTML文档下载 WORD文档下载 PDF文档下载
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卡的类型及特定的内容,这样,既使密码泄露了不会被人冒名登录。当然,任何安全措施都不是绝对安全的,安全措施还要有严格的保密制度及使用人员的高度的保密意识才能真正起到保密作用。

DELPHI中处理时间 Delphi中的INI文件编程 DELPHI中的消息处理机制 Delphi中对目录拷贝、删除和搬移的操作 Delphi中任务栏状态区的编程 Delphi中如何处理2000年问题 Delphi中如何实现系统权限的设置 Delphi中异常的截获及其个性化处理 Delphi自定义消息应用一例 Delphi5中资源文件的创建和使用 Delphi的Bug-Tthread Suspend方法 Email服务器的简单实现-Delphi资料 Hook的制作-Delphi资料 INI文件的应用-Delphi资料 NT中的关闭计算机,重新登陆的实现-Delphi资料 Windows 系统方面-Delphi资料 Windows外壳扩展编程-Delphi资料 避免二次运行-Delphi资料 编程实现文件关联-Delphi资料 编写定制的文件流实现文件读写加密-Delphi资料 采用多线程进行数据采集-Delphi资料 产生临时文件名-Delphi资料 程序不出现在任务栏-Delphi资料 程序缩小为任务条右下角的小图标-Delphi资料 得到 Windows 用户名和序列号-Delphi资料 得到windows临时路径-Delphi资料 得到Windows用户名和序列号-Delphi资料 得到计算机的名字和ip-Delphi资料 得到内存的 Status-Delphi资料 得到上一个激活的组件-Delphi资料 得到在内存中运行的所有应用程序的handle-Delphi资料 请问大师门,我引用数据库为什么不行呀? ----在线程里的SOCKET为什么关不掉 请问如何有破解excel2000文件密码的工具或方法吗?300分酬谢,急等.谢谢! 在SQL*PLUS下怎样查看一个字段的属性,如是否为主关键字。 帮小弟一把,我仅有的36分了,各位 在vc中如何将字符串转化成其对应的ascii码?用什么函数? 天啊!!怎么办啊,救命啊 内存分配的一个小问题 无聊,散分。只给前面十个。 用image控件可以互相转换ico,bmp,jpg三种格式的图片吗? 请问哪有NGWS下载? ?有没有啊 以下程序的输出值是 哪位朋友知晓如果Table与DbGrid绑定后,如何实现非第一索引的排序。 请问MSDN有中文版的吗?我们这的全是英文版的 我的 Win2000 出大问题了,急盼各位大虾赐教 请问那里有VB.NET软件下载呀 什么delphi命令可以打开网页呢? 到底有没有人知道如何可以在panel中动态的调用frame或者是form呢? 哪里有windowsXP下载? 送我能给的最大分,请教很小的问题,中高手进 聊天请进(thinkingdog) 大家来谈谈 IBM都有些什么认证???什么认证现在比较吃香???谢谢!!! 打印数窗问题求助! 如何使用UrlDownloadtoFile下载文件使用进度条? 如何用在两次用getTime()中得到两个不同的时间。 一个类似于牛角尖的问题(多余的CONST),不能忽视,请各位高手详细说明!!谢谢! 怎样读写注册表,每次都不成功,气死我也~! 各位救命啊,用 TClientDataSet.Load XML 的问题。。。。 娃呀呀,pb8怎么这么难安装?jaguar组建就用了5分钟,regester window又用了10分钟,重启动后,还没完,偶不敢装了,把碟退了出来,大家是不是也这样?//牛虻 请教高手一个ado的问题. 请问一个TWebBrowser的问题 请问:系统崩溃后,找不到BOOT,系统告诉:DOS基本分区为格式化?无法引导启动! 在VB.NET的tabcontrol上放置AxMSFlexGrid控件问题,急 java3D 现在大家是用Oracle 8还是 Oracle 9??? C++问题求助! 请教一个错误的原因. 各位大侠请问Jeffrey Richter的windows核心程序设计是不是就是andvanced windows程序设计的第四版 SCJP里的那些什么300-020,020是什么意思啊? 请问一个关于document.write()方法的问题。急啊! 初学者,欢迎灌水。 Delphi6的Bug?不兼容? 为什么我用GetProfileString()却总是得不到结果 sos 请教各位大侠一个问题 delphi6中的installShield 请介绍接收端CRC校验传输内容是否正确的方法,资料或代码。谢谢! 各位大侠请问Jeffrey Richter的windows核心程序设计是不是就是andvanced windows程序设计的第四版? 谁会做软件狗?有钱赚了!!! 为什么我用QuickRep作的报表只能显示一条记录,而且columnHeaderBand上内容也显示不出来 请问在税务局开发数据库的同行么?? 用二氧焊进行单面焊双面成型时,打底焊后,焊缝上出现裂纹,并非收弧时也出现,是何原因,如何避免? 上午12时在太阳光下的影子最长吗? 油为什么能穿透塑料袋为什么塑料袋没破 而且油还能穿透塑料袋弄的桌面上油都是油呢? 焊接符号 焊接双面焊符合怎么表示?单面焊又怎么表示呢 如何利用太阳光下的影子测量旗子的高度啊?怎么利用太阳光下的影子测旗杆的高度? 一个正方体在太阳光照射下有几种形状 请问:原电池中,若电解质溶液为0.5mol/L硫酸溶液,电极为铜片和铝片,则电流计指针为什么偏向铝?另外请问:稀HNO3与Fe反应放H2吗?若不放出H2,那该放出哪种气体? 请问这个焊接符号圆圈里的43是什么意思? 升华过程要吸热,有什么作用? Al 和Cu组成原电池 若电解质溶液为稀硫酸,则电流表的指针偏向铝还是铜?究竟电流表的偏转方向是偏向正极还是负极? 机械制图中焊接符号的表示法 用塑料袋炸出的油叫什么做油. 原电池中的电流计指针偏转方向为什么在Cu-Zn原电池间接上灵敏电流计,指针偏向Cu?电流计指针偏转方向不是应该和电流方向一样吗 形成西伯利亚地区大面积沼泽地的原因有多种,除了河水泛滥外,还可能有什么原因? 怎么做塑料除油剂配方才能改进?怎么做塑料除油剂配方才能改进,找哪家公司做比较好呢,最好设备什么的好点? 将表面去掉氧化膜的镁片与铝片用带电流表的导线连接,插入盛烧碱溶液的烧杯中,此时发现电流计指针偏转,判断此原电池的正负极,并写出电极反应式和总反应方程式.铝片做负极,镁作正极负 西西伯利亚平原的沼泽是怎么形成的 俄罗斯联邦为什么不把中国元朝时期就属于中国的领土:西伯利亚、外蒙古、等地,归还中国统治呢?为什么不把中国元朝时期就属于中国的领土:西伯利亚、外蒙古、 库页岛、唐努乌良海、 HIV 暴露在空气中的存活时间是多少? 电极材料:镁铝,电解质溶液:氢氧化钠溶液,电流表指针变转方向:偏向镁,铝做负极的原因是—— 影子的方向和太阳的位置的关系太阳的变化 来的 艾滋病病毒在空气中能存活多长时间,听说过因为修眉毛而得上艾滋病的,那么,他得在刀具上存在多长时间才能消失.这种感染艾滋病的机率有多大? 谁的影子最长? 阳光下任何( )的物体都有影子,影子都在( )的一面,在同一时刻,同一地点,直立的物体的影子方向都?阳光下任何( )的物体都有影子,影子都在( )的一面,在同一时刻,同一地点,直 熔化吸热 凝固放热日常生活中有那些利用熔化吸热,凝固放热的例子?什么情况下熔化吸热,凝固放热会给我们带来不利影响?怎样避免? 永动机是可以实现的,如果分子永远在运动.这是可以做永动机的实验依据的啊设计了好几个方案,见教!==假设一第三类永动机:利用一种永不枯竭的能源,实现永动^^如果分子可以永动,这说 在一天当中,物体在太阳光下的影子的方向是如何变化的 用汽油擦除衣服上的污渍时,汽油很快跑掉了,这是什么物态变化,过程中是吸热还是放热 科学会把怎样的运动当作永动机如果永动机每分钟转动12转,对物理学意义 有多大? 为什么上午太阳光下物体的影子方向应为北偏西 请问中国男性的阴茎的长度和直径标准? 写出下列物态变化的名称,并指出该物态变化是吸热还是放热1 夏天冰欺凌冒白气2 水结冰3 秋天的露水 用什么胶可以把塑料画现在漆墙上?就是白墙 甲乙两人在铁路轨道旁背向而行,速度都是每秒1米,一列火车匀速地向甲迎面驰来,列车在甲旁开过用了16秒,而在乙身旁开过用18秒,问这列火车多长? 太阳光照射旗杆从早晨到中午.下午之间的影子变化啥时候最长,最短,垂直?旗杆和影子垂直 焊接符号表示方法 下午的影子最长还是上午的影子最长 每小时太阳光照射的影子的角度是多少? 焊接符号怎么表示? 在早上、中午、下午哪个时间你的影子最长? 为什么在太阳光照射下,人在地面上的影子早晚长,中午短? 这个是表示什么焊接符号呀 为什么早上影子最长? 眼睛被太阳光照射到有影子被太阳强光反射到 求焊件符号的表示图纸焊件符号表示的意思. 我有急用 由镁、铝、氢氧化钠溶液组成的原电池,负极和正极反应式分别是? 布朗运动是液体颗粒运动还是固体颗粒运动?那 “布朗运动是悬浮在液体中的固体颗粒分子无规则运动的反映”哪错了? 这个焊接符号是啥意思?请指点. 那什么物态变化,要吸热放热的,应该怎么记?我老是记不住,求学习方法 悬浮在液体中的大颗粒固体会做布朗运动吗 太阳光下AC与A'C'是平行的,同一时刻的2根相同高度的木杆在太阳光照射下的影子一样吗?说说你的理由.要过程(初一下学期第五章三角形的复习题)最好有证明 单面焊双面成型!立焊单面焊双面成型是左右摆动在断弧还是只要在中间点一点不用摆动就断弧?不是开坡口的两块板,是类似立角焊的样子,两个板成V形组装,最好也说一下开坡口的,他们两种是 NAOH做电解液,连接好铝和镁组成原电池,正极和负极电子式分别是什么,为什么 某一时刻测的一根竹竿的影子是这根竹竿的两倍长那么此时的太阳光与地面成多少度角? Y电焊单面焊双面成型技能 镁和铝插入NAOH溶液中连接成原电池 铝表面有氧化膜为什么不必处理氧化铝和NAOH反应不是氧化还原啊 怎么构成原电池 如图,太阳光线AC与A‘C‘是平行的,同一时候两根高度相同的木杆在太阳光照射下的影子一样长吗?说说你的理由 平焊对接单面焊双面成型时,第一道焊焊枪角度是多少,第二道焊缝因离铁板平面多高? 在同一时刻两根木杆在太阳光下的影子如图所示,其中木杆ab=2米,它的影子bc=1.6米,木杆pq的影子又一部分落在了墙上,qm=1.2米,mn=0.8米,求木杆pq的长度 正方体在太阳底下的影子成什么图形?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn