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

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

英特尔物联网马拉松:用创造力改变生活 年末总结:2014年全球手游市场发展的六大趋势 Saber——模块化、组合式的移动前端框架 什么仇什么怨?还原日本反美颜应用Primo真面目 横跨2D与3D!专属C#开发者的超强游戏引擎Paradox 首份“2014年移动外语学习行业报告”等你下载 《近匠》Ayla联合创始人张南雄:物联网发展的三个阶段 神器 VisuAlgo:通过动画学习算法和数据结构 【工具推荐】QWrap——开源的前端JavaScript框架 老外看中国:移动应用UI设计的十大精髓 HTML5正名记:两家机构的博弈与一种标准的诞生 电池技术为何停滞不前?革新技术尚未出现 如何设计优雅的移动游戏? 前方高能!盘点2014年最颠覆三观的智能硬件 俄罗斯当局封杀GitHub,理由是教唆自杀 裁员110人、关闭工作室,Rovio重组求出路! 全Swift开发、代码开源!有钳的Firefox for iOS 详解开源游戏开发框架HaxePunk的主要特性 《程序员》杂志休刊通知 2014 TOP50最具价值CTO获奖名单揭晓! TIOBE 2014年12月编程语言排行榜:R和Swift成为年度语言候选者 免费增值应用正在“杀死”游戏开发者? 直接Mark!开源的DevOps开发工具箱 Apache Mesos联合创始人Benjamin Hindman:谈分布式应用现状 直觉不靠谱!使用移动应用分析的七个巧妙方法 屏蔽、挖角与丑闻,Uber的“创收神器”泡沫 蚁视科技发布会:三大产品与四大概念技术 盘点VS2015 预览版的5个新特性 低能的“智能” 你就是明星,第一届IBM RockStar正式启动! Kubernetes:Google分布式容器技术初体验 请介绍几本好用的自学C语言的书籍好吗?? 紧急求救,请高手来看看 .NET和JAVA到底哪个好? 谁来救我?ISequentialStream::write()为何不好使? 定义类型的困惑 大虾们,如何做一个图标选择框!!!(详情见内) ADO编程问题求解!!!!!!!!!!! ****************简单问题,高分求救??????????????????????? 请问怎样在TabStrip中的选项卡中增加图片?谢了 工程如何能建的工整一些? www.alldas.de为什么无法访问了? 关于动态控件的问题 ADO编程问题求解 怎么编程产生1MHz甚至更高频率的周期信号? 紧急求助—有关JMail4.1附件问题 挥泪大送分!!!!! 怎样才能让自己变胖? 做个仅有对话框的应用,但想把它放到托盘, 给ASP爱好者提个建议! 关于SQLserver2000“视图“的两个问题,请教高手! 好久没上网了,送分以庆祝再回csdn!!!!! 做浏览器,如何实现 “后退”,“前进”,这二个功能? 如何使C:盘,D盘的根目录不共享? 用resin时,是否需要jdk,如何配置?分必给! SDI中的某一个子视图里怎样对主窗口的状态栏进行更改?? ◇◆◇ 失恋代表什么? ◇◆◇ 我英语不懂,想考高程.行吗 ◇◆◇ 学生生涯快完了,大家来说说对学生生涯的感受,特别是什么最深刻的! ◇◆◇ 求救!如何把SQL命令从前端应用程序传给应用程序服务器 要去招商行笔试了,有参加过的兄弟给点建议。 ###############讨论一下->微软全力推出.NET技术和C#语言的出现,VC++还有多久的寿命??? 要去招商行笔试了,有参加过的兄弟给点建议 如何发一消息,帮别人问的 高手帮助!!! 要去招商行笔试,有参加过的兄弟给点建议。 要去招商行笔试,有参加过的兄弟给点建议 我配置的IIS,为什么只能读数据库,不能写入?为什么? 我要去招商行笔试了,有参加过的兄弟给点建议。 好久没发帖了……………… 请问LINUX/UNIX下那种扩展名的文件是可执行的?DOS的。EXE对应的格式是什么? C++入门看什么书好? c++一问题 20分呀!!!!!谁有BIG5到GB的好方法!(除了用码表文件) 请介绍一下FREENET中所谓“寻找最近主机”的算法。 isapiapp的问题?如何定义一个全局变量,使后一个运行的程序不会更改前一个程序的变量 请问response.buffer = true 有什么用? 简单问题: 请教VC中的视图切换问题(急) 50分征答:如何把*.dbf文件的数据导入SQLServer2000中? Win2000下调试ASP组件 寻找资深的网络培训工程师。 设函数f(x)=ax2+bx+c(c>0),且f(1)=-a/2 求证:函数f(x)有两个零点 设x1,x2是函数f(x)的两个零点,求|x设函数f(x)=ax2+bx+c(c>0),且f(1)=-a/2 1.求证:函数f(x)有两个零点2.设x1,x2是函数f(x)的两个零点,求| 定义域为R的函数f(x)若关于x的方程f(x)2+bf(x)+c=0定义域为R的函数f(x)=lg|x-2|(x不等于2)1(x=2)若关于x的方程f(x)2+bf(x)+c=0有5个不同的实数解x1,x2 x3 x4 x5,则f(x1+x2+x3+x4+x5)= 已知A为实数,f(x)=a-2/(2^x+1).当f(x)是奇函数时,若方程f(x)反函数=log2(x+t)总有实数根,求 T的范围 求函数f(x)=e^x+2x+3的零点所在的区间以及零点的个数 定义域为R的偶函数f(x),当x>0时,f(x)=lnx-ax(a属于R),方程f(x)=0在R上恰有5个不同的实数解 (1)求x0时,f(x)=lnx-ax(a属于R),方程f(x)=0在R上恰有5个不同的实数解(1)求x 已知函数f(x)=〔log2^x x>0 3^x x0 3^x x 函数f(x)=xcosx^2在区间[0,4]上的零点个数为? 已知M是满足下面性质的函数f(x)的集合:在定义域内,方程f(x+1)=f(x)+f(1)有实数解(1)函数f(x)=1/x 是否属于集合M?说明理由(2)设函数f(x)=lg(t/x^2 +1),求t的取值范围 已知函数f(x)的定义域为R且对任意实数x1,x2.,总有f(x1+x2)+f(x1-x2)=2f(x1)f(x2)成立,求证:f(x)是偶函 已知函数f(x)=1/3ax^3+1/2bx^2+cx.(I)若f'(1)=-1/2a,3a>2c>2b,试问:导函数f'(x)在区间(0,2)内是否有零点,并说明理由.(II)在上面条件下,若导函数f'(x)的两个零点之间的距离不小于根号3,求b/a的取值范围 已知f(x)=10^/lgx/,若方程f(x)=b,(b是常数)有两个不同的实数根x1,x2,且x1 设函数f(x)的定义域为R,对任意实数x1,x2,总有f(x1+x2)=f(x1)+f(x2),当x>0时,f(x)>0且f(2)=31、判断f(x)的奇偶性和单调性;2、求f(x)在区间【-2,4】上的最大值和最小值;3、当θ∈【0,π/2】时, 已知定义在R上的函数f(x)=1/3ax^3+1/2bx^2+cx(a<b<c)在x=1时取得极值,且y=f(x)的图象有一点处的切线斜率为-a(1)求证:0≤b/a<1(2)若f(x)在区间(s,t)上为增函数,求证:-2 求方程sinx=lgx的实数根的个数. 函数f(x)的定义域是R,对于任意实数x1,x2,都有f(x1+x2)=f(x1)+f(x2)当x>0时,f(x)>0,且不等式f(cos2θ-3)+f(4m-2mcosθ)>0对所有θ恒成立,求实数m的取值范围 已知函数f(x)=1/3ax^3+1/2bx^2+cx(a>0).若函数f(x)有三个零点分别为x1,x2,x3,且x1+x2+x3=-3,x1x2=-9,求函数f(x)的单调区间;(2)若f'(1)=-1/2a,3a>2c>2b,证明:函数f(x)在区间(0,2)内一定有极值点;(3)在(2)的条件下,若函数 若f(x)是R上的偶函数,且方程f(x)=0有6个实数根,则这6个根的和是什么 方程x5次方+x-3=0在区间(1,2)上有几个实数点 计算行列式|1+x1^2 x1x2...x1xn,x2x1 1+x2^2...x2xn.xnx1 xnx2...1+xn^2| 已知函数f(x)=3ax²+2bx+c,a+b+c=0,且f(0)·f(1)>0.若x1、x2是方程f(x)=0的两个实根,求|x1-x2|的取值范围. 定义在R上的偶函数f(x)在[0,+∞)是增函数,则方程f(x)=f(2x-3)的所有实数根的和 数列满足x1=1,x2=2/3,且1/xn-1+1/xn+1=2/xn(n>=2),则xn等于多少 已知函数f(x)=x3+bx2+cx+d的零点x1,x2,x3满足-2 已知方程x^2+2x+t=0的两实数根为X1,X2,若定义X1的绝对值+X2的绝对值=f(t).求函数f(t)的解析式t∈R 有一列数x1,x2,x3······xn已知x1=1,x2-x1=3,x3-x2=5,···,xn-x n-1=2n-1,当xn+x n-1=181,n的值是 已知函数f(x)=│lgx│-(1/2)^x有两个零点x1,x2则有A.x1x21 D.0 已知y=f(x)是偶函数且其图像与x轴有4个交点,则方程f(x)=0的所有实数根之和是多少 有一列数,第一个位x1=1.第二个为x2=3,从第三个数开始依次为x3、x4、xn,从第二个数有一列数,第一个位x1=1.第二个为x2=3,从第三个数开始依次为x3、x4、xn,从第二个数开始,每个数是相邻两个数的一 已知函数f(x)=x^3+bx^2+cx+d,f(x)的三个零点x1,x2,x3分别为公差为3的等差数列{an}的前三项,f'(x)/3+3=0有唯一解(1)求数列{an}的通项公式(2)设数列{an}的前n项和为Sn,数列{Sn}的前n项和为Tn 设f(x)是定义在R上的偶函数,且当x≥0时,f(x)=x2-2x-3,讨论方程f(x)=2a-3(a∈R)的根 一列数:X1、X2、X3、.、Xn、Xn+1、.,其中X1=3 (1)如果对任意的n,有Xn+1=Xn+2 计算X2=( )一列数:X1、X2、X3、......、Xn、Xn+1、......其中X1=3(1)如果对任意的n,有Xn+1=Xn+2计算X2=( )X3=( )X4=( 设定义域为R的函数f(x)=lg/x-1/,(x不=1) 0 ,(x=1) 则使关于x的方程f^2(x)+bf(x)+c=0有5个不同实数解的条件是(A)b0 (B)b>0且c0且c=0 (D)b>=0且c=0 已知二次函数f(x)=aX2+bx+c的图象经过点(-1,0),且对一切实数x,不等式x≤f(x)≤(1+x2)/2恒成立.求f(x)的解析式注:x2是x的平方急 设X1、X2、X3……Xn是整数,并满足:(1)-1≤Xi≤2 i=1、2、.n;(2)X1+X2+……+Xn=19 (3)X1的平方+X2的平方+……+Xn的平方=99求X1的立方+X2的立方+……Xn的最大值与最小值 设定义域为R的分段函数f(x)=|lg|x-1||,x≠1;0,x=1,若关于x的方程a[f(x)]2-f(x)+1=0有8个不同的实数解求a的取值范围 若函数f(x)=x^2,则对任意实数x1,x2,下列不等式总成立的是:A.f[(x1+x2)/2]小于等于[f(x1)+f(x2)]/2B.f[(x1+x2)/2]小于[f(x1)+f(x2)]/2C.f[(x1+x2)/2]大于等于[f(x1)+f(x2)]/2D.f[(x1+x2)]/2大于[f(x1)+f(x2)]/2 已知X1,X2,X3,...Xn中每一个数值只能取-2,0,1中的一个,且满足:X1+X2+X2+...+Xn=-17,X1²+X2²+X3²+...+Xn²=37求X1³+X2³+X3³+...+Xn³的值当X=1+√2002/2时,代数式(4X³-2005X-2001)^2009的 已知函数f(x)=lg(ax^2+2ax+1)的定义域为R.则实数a属于_? 设f(x)是定义在R上的增函数,且对于任意的x都有f(2-x)+f(x)=0恒成立.如果实数m,n满足不等式组设f(x)是定义在R上的增函数,且对于任意的x都有f(2-x)+f(x)=0恒成立.如果实数m,n满足不等式组f(m^2-6m+23)+f 有一列数X1 X2 X3 .XN XN+1 X1=3 如果对任意的N 有XN+1=2XN 试着 把 XN用N表示出来 定义域为R的函数f(x)={lg|x-2|,x不等于2; 1,x=2}若关于x的方程f(x)^2+bf(x)+c=0有五个不同实根x1x2x3x4x5求f(x1+x2+x3+x4+x5)=? 设函数f(x)=ax^2+bx+1(a≠0,b∈R),若f(-1)=0,且对任意实数x(x∈R)不等式f(x) ≥0恒成立,求a,b 若一组数据X1,X2,X3,X4,…,Xn的方差为0,则表示( )A.X拔=0B.X1=X2=…=Xn=0C.X1=X2=…=XnD.无法确定 设定义在R上的函数f(x)=根号下[x2-2lxl+1],则关于x的方程f2(x)+bf(x)+c=0有八个不同实数解的充要条件是 已知函数f(x)=x2-2x-5.(1)是否存在实数m,使不等式m+f(x)>0对于任意x属于R恒成立?说明理由.(2)若存在一不等式m-f(x)>0成立,求实数m的取值范围 有一列数:X1、X2、X3……XN……其中X1等于31 如果对任意的N,有XN+1=2XN.计算X2=( ),X3=( ),X4=( ),根据上面一小题的结果,请试着把XN用N表示出来:XN=( ),计算X6=( ) 函数f(x)=(2x次方-1)的绝对值,则关于x的方程f2(x)=bf(x)+ 有3个不同实数解的充要条件是函数f2(x),则关于x的方程 有3个不同实数解的充要条件是A.-1 0 B.1>b > 0且c < 0 C.-1b≥0且c=0 f(x)是R上的函数,对于任意实数a,b,都有f(ab)=af(b)+bf(a),且f(2)=1.(1)求f(1),f(1/2)的值(2)令bn=f[2^(-n)],即2的-n次方,求证:{2^n•bn}为等差数列(3)求{bn}的通项公式 设函数f(x)=ax2+bx+c(a>0),且f(1)=-a/2 设x1x2是函数f(x)的两个零点,求|X1-X2|的取值范围 已知函数y=3-(x-m)(x-n),且a,b是方程3-(x-m)(x-n)=0的两个根,则实数m,n,a,b的大小关系可能是A.m<a<b<nB.m<a<n<bC.a<m<b<nD.a<m<n<b 函数f(x)=|2^x-1|(x 设函数f(x)=ax2+bx+c(a>0),且f(1)=-a/2,求证函数有两个零点 已知函数f(x)=|x^2+2x|,若关于x的方程f^2(x)+bf(x)+c=0有七个不同的解,则b,c大小关系为?答案是b 已知函数f(x)=log2(a-2-x/x-a)是奇函数,若关于x的方程f-1(x)=m2^-X实数解求m的值f-1(x)即反函数 已知函数f(x)=ax2+bx-1(a,b∈R且a>0)有两个零点,其中一个零点在区间(1,2)内,则a-b的取值范围是A(-1,1) B(-1,+~)C(-2,1)D(-2,+~)答案为B。急需过程,谢谢。 已知f(x)=lx2+2xl若关于x的方程f2(x)+bf(x)+c=0有7个不同的实数解.则b.c的大小关系为Ab>c Bb>=c与b 设函数f(x)=log2^(2^x+1)的反函数为y=f^-1(x),若关于x的方程f^-1(x)=m+f(x)在【1,2】上有解,实数m的范围 设函数f(x)={2(x>0),x2+bx+c(x≤0),若f(-4)=f(0),f(-2)=-2,求函数g(x)=f(x)-x的零点的个数.设函数f(x)={2(x>0),x2+bx+c(x≤0),若f(-4)=f(0),f(-2)=-2,求函数g(x)=f(x)-x的零点的个数. 已知函数f(x)=1/3x^3+x^2+(2a-1)x+a^2-a+1,若f'(x)=0在(1,3】上有解,则实数a的范围 已知a为实数,f(x)=a-2/(2^x+1)(x为R) 当f(x)是奇函数时,若方程f(x)的反函数=log2(x+t)总有实数根,求实数t的取值范围.
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn