社区
C#
帖子详情
请教webservice 安全和加密的方法?
henjiandan
2010-04-08 01:36:31
首先说一下soapheader验证。 用网上提供这种方法感觉很不安全,而且每个方法都要加判断,winform调用的时候 也需要都加验证。请问 还有其他什么比较安全的方法 来实现吗??
这还有一贴,到时候一起结,那边太冷清了。
http://topic.csdn.net/u/20100407/23/b1426512-0b29-4abe-9847-f8fb0148c8d6.html?77832
...全文
702
2
打赏
收藏
请教webservice 安全和加密的方法?
首先说一下soapheader验证。 用网上提供这种方法感觉很不安全,而且每个方法都要加判断,winform调用的时候 也需要都加验证。请问 还有其他什么比较安全的方法 来实现吗?? 这还有一贴,到时候一起结,那边太冷清了。 http://topic.csdn.net/u/20100407/23/b1426512-0b29-4abe-9847-f8fb0148c8d6.html?77832
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jietuan
2010-04-08
打赏
举报
回复
soapheader验证和WSE.
zzxap
2010-04-08
打赏
举报
回复
众所周知,WebService访问API是公开的,知道其URL者均可以研究与调用。那么,在只允许注册用户的WebService应用中,如何确保API访问和通信的安全性呢?本文所指的访问与通信安全性包括:
访问安全性:当前访问者是注册合法用户
通信安全性:客户端与服务器之间的消息即使被第三方窃取也不能解密
本文安全的基本思路是:
注册用户登录时使用RSA加密
Web API调用参数使用DES加密(速度快)
Web API调用中包含一个身份票据Ticket
Web服务器保存当前Ticket的Session,包括:Ticket、DES加密矢量、注册用户基本信息
1 WebService身份验证
确保注册用户的访问安全,需要如下步骤:1)产生一个当前客户端机器票据(Ticket);2)请求服务器RSA公钥(RSAPublicKey);3)使用RSA加密登录口令及发布DES加密矢量(DESCipherVector)。
1.1 产生客户端机器票据Ticket
一般而言,可以由客户端机器根据自己的MAC、CPU序列号等唯一标识产生一个本机器的Ticket字符串票据,其目的是:唯一标识当前客户端,防止其它机器模仿本客户端行为。
1.2 请求服务器公钥RSAPublicKey
客户端携带票据Ticket向服务器请求RSA公钥RSAPublicKey。在服务器端,一般采取如下策略产生RSA加密钥匙:
Application_Start时产生一个1024或更长的RSA加密钥匙对。如果服务器需要长久运行,那么Application_Start产生的RSA可能被破解,替代方案是在当前Session_Start时产生RSA加密钥匙对
保存当前票据对应的客户帐号对象,即:Session[Ticket] = AccountObject,在确认身份后在填写AccountObject具体内容:帐号、RSA加密钥匙对、DES加密矢量
完成上述步骤后,服务器将RSAPublicKey传回给客户端。
1.3 加密登录口令及DES加密矢量
客户端获得RSAPulbicKey后,产生自己的DES加密矢量DESCipherVector(至少要8位及以上,该加密矢量用于以后的常规通信消息加密,因为其速度比RSA快)。接着,客户端使用RSAPublicKey加密登录帐号、口令及DESCipherVector,连同Ticket,发送到服务器并请求身份验证。登录API格式如下:
public void Login(string Ticket, string cipherLongID, string cipherPassword);
如果验证成功,服务器将当前帐号信息、RSA钥匙、DESCipherVector等保存到会话Session[Ticket]中。
2 WebService通信安全性
2.1 加密WebService API参数
身份确认后,在客户端调用的WebService API中,必须包括参数Ticket,其它参数则均使用DESCipherVector加密。服务器端返回的消息也同样处理。例如,提交一个修改email的函数定义为:
public void ModifyEmail(string Ticket, string cipherEmai);
2.2 客户端解密消息
客户端接收到服务器返回消息后,先做解密操作,如果成功则进入下步处理。否则抛出加密信息异常。
2.3 服务器端解密消息
服务器接收到客户提交的API请求后,首先验证Ticket的合法性,即查找Session中是否有该票据以验证客户身份。然后,解密调用参数。如果成功则进入下不操作,否则返回操作异常消息给客户端。
需要指出,如果第三方截获全部会话消息,并保留其Ticket,此时服务器端仍然认可这个第三方消息。但是,第三方不能浏览,也不能修改调用API的参数内容,此时解密参数时将抛出异常。
上面探讨了一个基于加密的WebService访问与通信安全方法,即使第三方获取消息,不能查看原始内容,也不能修改内容,保证了WebService API的安全性。
本方案还是存在一个明显的缺陷,即:如果直接修改调用参数内容,在客户端或服务器端解密时不抛出异常,如何处理?如何保证解密时一定抛出异常?这个待以后研究后回答。
asp.net知识库
动态调用对象的属性和
方法
——性能和灵活性兼备的
方法
消除由try/catch语句带来的warning 微软的应试题完整版(附答案) 一个时间转换的问题,顺便谈谈搜索技巧 .net中的正则表达式使用高级技巧 (一) C#静态成员和...
PHP如何向.NET接口
webservice
发送xml请求
PHP向.NET的
webservice
发送请求,.NET中接口
方法
的参数是分别写的,PHP中需要将参数当做一个数组。但如果.NET中某个参数是xml字符串,在PHP中怎么写才能正确发送请求呢?
请教
一下上述代码用PHP实现应该...
WebService
之CXF入门视频教程
WebService
之CXF视频培训教程,该课程分为四个部分讲解Java cxf技术、包括
Webservice
基本概念、JAX-WS方式开发
WebService
应用、JAX-RS方式开发WebServiec应用、SpringBoot整合CXF开发
WebService
应用。
京东
WebService
调用 求助~~~~~
请教
各位 为什么这样调用获取不到数据 string venderSign = ""; //签名 string tradeno = DateTime.Now.Ticks.ToString();//流水号 long venderID = 20388; //商家ID string secretco...
cxf 本地wsdl_CXF 服务发布成功,但无法通过公布地址加?wsdl获取wsdl
CXF 服务发布成功,但无法通过发布地址加?wsdl获取wsdl 本帖最后由 matrix1984 于 2013-04-30 12:54:31 编辑 cxf + spring,通过... 下面是配置和代码:
webservice
-server.xml ---------------------- xmlns:beans=...
C#
110,534
社区成员
642,575
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章