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

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

【CTO讲堂】无社交,不App!——为App加载强大的通讯社交引擎 【探秘ES6】系列专栏(七):箭头函数 【前端框架】Backbone.js在大型单页面应用中的应用实践 【探秘ES6】系列专栏(六):解构赋值 《近匠》TestBird,专注的手游自动化云测试平台 【探秘ES6】系列专栏(八):JS的第七种基本类型Symbols 专访李林锋:我与Netty那些不得不说的事 手把手教学:巧用Core Data和RubyMotion开发iOS应用 《近匠》琥珀天气,精细化打磨征服Google Play 【CTO讲堂】人工智能到底能为我们带来什么? Linksys再度回归中国市场,主推智能路由 Windows 10:全平台战舰与移动化破冰——微软(中国)操作系统工程院院长谢育涛专访 专访友盟CEO叶谦:深挖海量终端用户数据的价值 七牛资深前端工程师马逸清:前端测试探索实践 实战iOS 9:开发者必须掌握的三种搜索API 腾讯Bugly干货分享:浅谈Swift在实际项目中的应用 【前端人生】ThoughtWorks黄峰达:利用横向扩展方式,快速学习前端新框架 这是前端最好的时代——论前端的“三化”建设 游戏引擎网络开发者的64做与不做(一):客户端方面 六问七牛CDN:打造融合CDN管理服务平台 《近匠》Wilddog野狗,跨平台的实时通信云服务 【CTO讲堂】招人不易留人更难——创业团队要闯哪些关? iOS UIView动画实践(四):过渡与伪3D动画 日程全公布|年度人工智能技术精英聚会 7月26-27相约北京 TypeScript 1.5发布,支持大量ES6新特性 快快快!27个提升效率的iOS开源库推荐 《近匠》Maxense,“云+传感”推动产业变革 【探秘ES6】系列专栏(九):使用Babel和Broccoli 2015年Postgres全球开发者大会参会总结 英特尔硬享公社启动“创意原型拍卖” 对接创意与商机 详解Swift 2.0(一):苹果做的25项改变 如何做"标签窗口"????请高手明示!! 急救!怎样用shell 命令读取 *.chm 格式的帮助文件? 请教各位高人哪种51单片机抗干扰性能好点。 回答就有高分!一个简单的问题! 急!Word档案变成X档案了!-------请微软专家也过来帮忙 双重系统引导的问题 现在网上还有没有好的免费个人主页空间?最好支持asp等等,空间小点没关系,高分求! 请问什么地方有PPP over Ethernet(PPPoE)协议 技术资料!!! 请问为何我的程序在Release版本下出错? 再帮忙看看这段代码,即使密码正确也显示"错误:请确认阁下的身份!" 怎么回事啊? 请教这个API(ShowWindow)怎么使用? 谁能告诉我 virtual(虚) 析构函数目的何在干什么用的? 救急 装一个rose要多大空间啊 关于CJ60库实现Visual stduio的界面的问题! 请问要实现在空表上建立数据时,如何做到text1.text能显示“1000”,即Number的“标识种子”值! 这个UDL文件错在哪? 推荐一篇文章《麦子的颜色》 大家来灌水. vc service pack? 关于聊天室的界面 c++库函数的头文件有.h和没有有什么区别?为什么c++的库函数在VC很多不能用,怎么办? 可以在dll里面放SDI框架并调用吗? MIDAS中,怎样通过Client.exe生成MS Sql2000数据库?(就像《管家婆》那样,运行一次客户端,输入数据库的名称,就会自动在SQL Server2000 如何查找一个对话框的owner窗口? 我应该选择VC还是C#??? 在系统启动时至少有一个服务或驱动程序产生错误,详细信息,请使用事件查看器查看事件日志 操作系统是如何发现新插入的设备的? 关于对Com1,Com2读取条形码的编程 帮个忙,先,谢了! 接着那个堆栈问题,创建了,试验了。但应用时出现了对创建错误? 我想在对话框上输出一个char数组,用什么方法比较好????????????? 怎样移动较大副图片的时候避免或者尽量减少闪动? 怎么把网络编程和数据库联系起来 如何贴背景透明的按钮?急,急,在线等待!!! 奇怪了! 请问如何获得居于网中一个工作组下的所有计算机?? 还是一个dll内部变量的问题。 怎么回事? 送分! 大家看看 请问MSDN的帮助怎么获得 怎么样获得一同名text表单域的值? **C++语言的设计和演化** 图书好贵呀!!! 求表达式正确与否的校验算法 怎样控制DllMain?在哪里可以编辑这个函数? 同一个句柄对于所有进程是否一样? 我的red hat linux8 怎么才能配置声卡 如何判断一个字符串是否是常数 《Java与模式》一书已经出版 --- 作者 各为高手,如何能够看到我打开网页的session的值 The tie matches his shirt veryThe tie matches his shirt very well 同义句 The tie ___ ___ ___ his Shirt 有关植物的成语至少一百个 修改病句. 李红的写作水平有了明显的进步. 英国小男孩.用英语表达. 世界上什么地区一年四季如春? 蚕豆、青菜、黄瓜、冬瓜、番茄、苹果、橘子、葡萄、桃子、荔枝属于被子植物的有哪些?判断的理由是什么 释迦牟尼佛和如来佛是一个佛吗?佛祖是谁? 跟植物有关的成语 香蕉 苹果 桔子 西红柿 荔枝 哪个是不同类的词 佛陀为什么能发现宇宙人生的真相?还有他发现的东西真的是真理?那默罕默德也是先知,为什么他们两个发现的真相不同?一个说神不存在,一个说神存在.他们到底谁对谁错?真相不可能有两个吧 有哪些有关植物的成语 They_ to be here an hour ago.A:suppose B:supposed C:were supposed D:are supposed应该选择哪项,原因是什么!谢谢各位 什么是climate change 与植物有关的成语、 菊花一般要多久才开花 man相对的单词是什么 带有植物的成语 急需 谢谢了 请问你的四级成绩出来了吗?你涂的答题卡有没有问题? 这首诗运用了象征手法,请指出象征的对象,体会诗的深刻含义 诗,在天晴的时候在天晴了的时候 在天晴了的时候, 该到小径中去走走; 给雨润过的泥路, 一定是凉爽又温柔; 炫耀着新绿的小 首钢实业在曹妃甸和别的公司合作的包装材料公司叫什么名字 选择重音位置与其它3个不同的单词A.brigeB.pictureC.cupboardD.excuse 用什么方法可以又快又好的记住词语解释 欧洲各国的语言是不是都很类似? tout等四词作泛指形容词,tout ceci est peu important,这一切都不重要.应该是复数,tout是单数 Both of them ---- the sports meeting and did very wellA、took part in B、played for C、joined 请帮我把这句翻译成英文:那个未来或许没你,但有上课谈的理想. 从四个选项中选出一个重音位置与其他三个不同的单词()1.A.palace B.country C.capital D.today ( ) 2.A.enjoy B.bathroom C.meter D.message ( ) 3.A.Russian B.Holloween C.homework D.usually( ) 4.A.geography B.biology C.English D.be Do you still remember meeting with him in Beijing?分析一下句子结构好吗 马尾松与黑松的区别,怎样区分马尾松与黑松~ tout等四词作泛指形容词,tout ceci est peu important,这一切都不重要.应该是附属,tout是单数怎么能代表? 如使秋天开花的菊花在“五一”开花,处理的措施是A.增加光照强度B.降低光照强度C.增加光照时间D.增加黑暗时间 明天李红母亲的生日 作为李红的好朋友请你给李红出个主意,给李红的母亲买什么礼 They came here in autumn(同义句)They___ ____here_____ _____ The Greens went to Sanya in February同义句 The Greens ____ _____ ______Sanya______ ________ 我的母亲600字作文网 花卉园买回月季和郁金香共1700盆 月季的3分之2和郁金香的75%相等 两种花各买了多少盆?各位路过的或没路过的 这道题怎么做 不要方程 they came here over ten years ago的同义句they came here ____ ____ten yeas ago 作文大全600字我的母亲 求英文邓亚萍传记一篇 四级答题卡漏涂?四级的答题卡,我中间的题漏涂了,空过去了,请问会不会影响到下面的题,是不是下面的题都提上去批?希望确定的帮忙回答一下, 我要进行细菌的形态鉴定,现在想购买倒式显微镜请问有没有买过的?细菌的形态鉴定对显微镜有没有什么要求?放大倍数要多少才够?哪家公司产品好?因为还要有其他用途,所以实验室要求要买 我叫时传振我的英文名叫 用什么办法控制菊花开花的时间? 用显微镜观察细菌形态时,盖玻片太厚有什么影响? i ___(记得)they once came here for dinner. 法语中5个特殊的形容词 beau ,nouveau,vieux,fou,mou 求解释啊 阳性单数形容词的解释! Many can remember when Chinese,Japanese and Filipino immigrants were the victims of social isolation.求翻译 为什么树叶再不同季节颜色会有变化 现代生物科技分类 另类成语如骑乐无穷 同志们快啊 把How long will they stay?(改成be going to句型) 这是什么植物?叶子生长中颜色逐渐变化!非常漂亮! 如果你是小柳树,你想对春天说什么? how long are you going to stay in Bangkok?答语A.for another three weeks B.for the last three weeks C.it tooks three weeks 求四个关于树木的成语 描写春天柳树的诗 It's too bad that they aren't going to stay in Beijing for long是宾语从句吗,主语是谁,意思是什么? 描写有花草树木的成语,说出四个 将the tie matches his shirt very well.改为同义句the tie [ ] [ ] [ ] his shirt. 外国的哪一个城市一年四季都像秋天一样 植物叶子颜色变浅以前叶子都是绿油油的,现在颜色越来越淡,尤其是滴水观音,茎还软软的,经常自己折断了.植物放在阳光充足的地方.温度也不低.是缺少什么东西吗?还是太阳晒过头或是其他
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘