使用delphi 开发多层应用(十)安全访问服务器

      前面讲了如何建立和访问服务器,但是前面建的服务器都没有安全控制,这里有很大的安全问题,第一是任何人做一个客户端都可以都可以访问

服务器。第二是数据在网络传输过程中都是明码的,没有加密,使用网络侦听器就可以检测到传输的内容。这是一个标准的系统不允许的,今天就

讲一下如何安全的访问服务器.

     首先我们需要使用加密来保证数据在网络上传输的安全,首先在服务器端我们加一个TkbmMWDCP2Crypt.这个是kbmMW 对DCP2Crypt的封装,

DCP2Crypt 是一个用pascal 实现的各种加密及校验的开源库。kbmMW 使用其来实现网络传输过程中的数据加密.

并在TkbmMWTCPIPIndyServerTransport 里面设置crypt 为kbmMWDCP2Crypt1.

另外,我们需要对客户端的进行认证,这里是通过用户名及密码来实现的.在服务器的认证事件里面我们加入以下代码:

procedure TForm1.kbmMWServer1Authenticate(Sender: TObject;
ClientIdent: TkbmMWClientIdentity; var Perm: TkbmMWAccessPermissions);
begin
if ((clientIdent.Username='xalion') and (clientIdent.password='123456')) then //这里可以通过使用权限库来对客户端进行认证
begin
Perm:=[mwapRead,mwapWrite,mwapDelete,mwapExecute,mwapInternalExecute] //对应着服务器的不同访问权限,在这里可以再细分权限
end;
end;

同时要设置 kbmMWServer 的EarlyAuthentication 为True.

服务器端完成,可以编译并运行了.

 

现在来看客户端,同样需要先增加一个TkbmMWDCP2Crypt,并设置kbmMWTCPIndyClientTransport 的crypt

为kbmMWSCP2crypt.

并设置kbmMWSimpleClinet 的用户名和密码.

编译和运行,并访问服务器.

这样就实现了安全访问kbmMW 服务器.

当然了由于每个kbmMW服务器会有很多个不同的服务, 可能需要针对不同的服务进行不同的认证,

这个就要在每个服务里面进行进一步的认证了。这里就不再罗嗦了.

转载于:https://www.cnblogs.com/xalion/archive/2012/02/26/2368452.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/379920.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数组push()方法以及JavaScript中的示例

JavaScript push()方法 (JavaScript push() method) push() method is used adds/inserts an element at the end of an array, it returns nothing but changes the length of the array. push()方法用于在数组末尾添加/插入元素,它只返回改变数组的长度&#xff0…

C——整除的尾数

Problem Description 一个整数&#xff0c;只知道前几位&#xff0c;不知道末二位&#xff0c;被另一个整数除尽了&#xff0c;那么该数的末二位该是什么呢&#xff1f; Input 输入数据有若干组&#xff0c;每组数据包含二个整数a&#xff0c;b&#xff08;0< a<10000…

web安全---浏览器解析提交数据的过程

解码规则 html解析器对html文档进行解析&#xff0c;完成解析并创建DOM树JavaScript或者CSS解析器对内联脚本进行解析&#xff0c;完成js、css解码url解码会根据url所在的顺序不同而在JS解码或者解码后 解码顺序 html解析第一步执行&#xff0c;而JS解析和URL解析则要根据情…

commons-lang的FastDateFormat性能测试

commons-lang的FastDateFormat是一个thread-safe的&#xff0c;对SimpleDateFormat的一个重新实现。 SimpleDateFormat为什么不是thread-safe的呢&#xff1f;看一下具体实现就知道了&#xff0c;其父类中定义了成员变量Calendar&#xff0c;每次格式化日期时都会先重置这个Cal…

C——Flowers

Problem Description As you know, Gardon trid hard for his love-letter, and now he’s spending too much time on choosing flowers for Angel. When Gardon entered the flower shop, he was frightened and dazed by thousands kinds of flowers. “How can I choose!”…

include函数_include()函数以及JavaScript中的示例

include函数includes() is a predefined function in JavaScript, which is used to check whether a given element exists in the array or not? include()是JavaScript中的预定义函数&#xff0c;用于检查数组中是否存在给定元素&#xff1f; Example: 例&#xff1a; &l…

利用POI创建OpenOffice中的Excel文件

之所以称为OpenOffice的Excel文件,我发现了一个特点就是: 一些网站严格限定了文件必须为MS的Excel格式的话,用POI的HSSF创建的Excel就会不识别.不知道是什么原因,可能是版本的问题,据说HSSF(令人讨厌的电子表格格式)生成的是MS97的格式.但是97-2003的提示中明显的说明了MS的lib…

批处理文章集锦

http://www.5dmail.net/html/2005-10-17/20051017181702.htmhttp://www.cnblogs.com/glaivelee/archive/2009/10/07/1578737.html转载于:https://www.cnblogs.com/Jessy/archive/2012/02/29/2372955.html

web安全-----CSRF漏洞

简述 CSRF&#xff1a;Cross-site request -forgery&#xff0c;跨站请求伪造&#xff0c;是一种web攻击方式&#xff0c;是由于网站的cookie在浏览器中不会过期&#xff0c;只要不关闭浏览器或者退出登录&#xff0c;那以后只要访问这个网站&#xff0c;都会默认你已经登录。…

java math 类_Java Math类静态长轮(double d)示例

java math 类数学课静态长回合(双D) (Math Class static long round(double d) ) This method is available in java.lang package. 此方法在java.lang包中可用。 This method is used to return the closest long value to the given argument. 此方法用于将最接近的long值返回…

C——求平均成绩

Problem Description 假设一个班有n(n<50)个学生&#xff0c;每人考m(m<5)门课&#xff0c;求每个学生的平均成绩和每门课的平均成绩&#xff0c;并输出各科成绩均大于等于平均成绩的学生数量。 Input 输入数据有多个测试实例&#xff0c;每个测试实例的第一行包括两个…

依赖、关联、聚合、组合还有泛化的关系(转载)

依赖、关联、聚合、组合还有泛化的关系 此文为转载文章:http://zjzkiss.cnblogs.com/世界是普遍联系的&#xff0c;因此程序世界中的类&#xff0c;也不可能是孤立的。UML为我们定义了它们之间的关系&#xff0c;就是&#xff1a;依赖、关联、聚合、组合还有泛化。 泛化关系比…

神奇的LINQ ---可以通过对象来查询数据

摘要&#xff1a; linq:在一个新项目里面要用这个技术&#xff0c;然后自己拿起书看了下&#xff0c;记录下自己的新发现&#xff0c;只适合简单入门的新童鞋看呀&#xff01;&#xff01;&#xff01; 结论&#xff1a; linq是对象领域与数据领域的一个桥梁。 为什么会出现Lin…

java math.cos_Java Math类静态double cos(double d)示例

java math.cos数学类静态双cos(double d) (Math Class static double cos(double d)) This method is available in java.lang package. 此方法在java.lang包中可用。 This method is used to return the trigonometric cosine of an angle of the given parameter in the meth…

web安全---SSRF漏洞

简介 SSRF&#xff1a;服务器请求伪造&#xff0c;是一种攻击者构造形成由服务端发起请求 的一个安全漏洞。一般情况下&#xff0c;SSRF攻击的目标是从外网无法访问的内部系统&#xff08;正是因为它是由服务端发起的&#xff0c;所以它能够请求到与它相连而与外网隔离的内部系…

集合——对象数组(引用数据类型数组)

案例&#xff1a;我有5个学生&#xff0c;请把这个5个学生的信息存储到引用数据类型数组中&#xff0c;并遍历数组&#xff0c;获取得到每一个学生的信息。 思路分析&#xff1a;首先&#xff0c;想要创建学生对象&#xff0c;就得有学生这个类&#xff0c;所以&#xff0c;首…

提升应用视觉Android效果的10个UI技巧

在Android应用开发中&#xff0c;风格和设计或许不是最关键的要素&#xff0c;但它们在决定Android应用成功与否上确实扮演重要的角色。以下是10个Android应用的UI设计技巧&#xff0c;还有个附加技巧&#xff0c;能够提供你的Android应用的视觉吸引力。 技巧1&#xff1a;使用…

kotlin中判断字符串_Kotlin程序查找字符串中字符的频率

kotlin中判断字符串Given a string and a character, we have to find the frequency of the character in the string. 给定一个字符串和一个字符&#xff0c;我们必须找到字符串中字符的频率。 Example: 例&#xff1a; Input:string "IncludeHelp"character to…

OD使用

0x01 功能界面 序号1是汇编代码对应的地址窗口序号2是汇编对应的十六进制机器码窗口序号3是反汇编窗口序号4是反汇编代码对应的注释信息窗口序号5是寄存器信息窗口序号6是当前执行到的反汇编代码的信息窗口序号7是数据所在的地址序号8是数据的十六进制编码信息&#xff0c;序号…

windows mobile 开发总结--菜单

在开发时经常要创建菜单&#xff0c;并且动态显示和隐藏菜单或者是某个子菜单。以下就是实现的方法&#xff1a; 1。创建并显示菜单,先在资源里添加菜单&#xff0c;然后如下代码 SHMENUBARINFO mbi; ZeroMemory(&mbi, sizeof(SHMENUBARINFO)); mbi.cbSizesizeof(SHMENUBAR…