Webservice 安全性访问

简介: 1.访问安全性     WebService对于我们来说并不陌生,在很多地方我们都会使用到它,它为我们带来了很多方便,同时解决了多平台之间的通讯协议问题等等,因为WebService是以一种Http请求和Xml响应的方式来达成多平台之间的接入。

1.访问安全性

    WebService对于我们来说并不陌生,在很多地方我们都会使用到它,它为我们带来了很多方便,同时解决了多平台之间的通讯协议问题等等,因为WebService是以一种Http请求和Xml响应的方式来达成多平台之间的接入。这种方式我们一般称之为‘接口’。这里需要说明的是:所谓平台是指开发平台(例如ASP.NET和Java等开发平台)和站点平台(例如淘宝网站和支付宝网站)。就因为WebService给我们带来种种方便,导致有很多’同学‘大量的、无选择性的使用WebService,从而易导致对系统性能的降低,同时,如未对WebService访问安全性做防御的话极有可能对系统安全性造成的致命的漏洞。因为只要知道WebService的Http请求地址,那任何一个客户端都可以进行请求。而WebService将会面临的有它所认可的客户端和不认可的客户端请求。

  我们来举个例子,例如:中国移动公司对外提供了一个发送手机短信的WebService接口,并此请求地址已被公开。那任何一个客户端都可以请求这个WebService。当这个接口没有验证请求的客户端身份的话,那就意味着任何客户端都可调用此接口进行发送短信。这样移动不亏死才怪。所以它就会在每个客户端请求过来时先验证请求的客户端是否是跟此接口达成了一种合法请求协议的客户端。如果是合法请求则为此请求提供服务,否则对请求一概否决。

  那我们如何来判断这些请求中哪些是合法、哪些是非法呢?以本人对WebService的开发,总结了以下比较好的三种方式验证,并每种验证处于不同安全级别,也可说不同使用场合。

  1.级别:低

     使用场合:在本站点使用,不对外开放。

     验证方式:通过验证码验证

     具体说明:我们可在webService服务端配置一段任意字符串(最好是MD5加密),然后客户端发送请求过来时,同时将验证码发送服务端,然后再跟服务端的验证码进行比较来判断是否是合法请求。例如:

 

代码
[WebMethod(Description  =  " 发送短信 " )]
public  bool  SendSms( string  authString, string  mobiles,  string  smsContent, DateTime ?  sendTime,  ref  string error)
{
// 根据客户端发送的验证码进行根服务器的验证码进行匹配
if  (authString  !=  " 980017891ff67cf8a20f23aa810e7b5a " )
{
// 不是合法客户端请求时,将拒绝对此请求提供服务
error  =  " 非法请求,验证身份失败 " ;
return  false ;
}
// 如果是合法请求,则继续为此请求提供服务
using  (SmsFacade smsFacade  =  new  SmsFacade())
{
if  ( ! smsFacade.SendSms(smsContent, mobiles, sendTime))
{
error
  =  smsFacade.PromptInfo.CustomMessage;
return  false ;
}
}
return  true ;
}

 

 

  2.级别:中上

    使用场合:提供第三方平台使用,完全开发性

    验证方式:通过请求的客户端IP验证

  具体说明:我们可以将合法请求的客户端IP保存在服务端(可存入数据库等方式保存),当客户端发送请求过来时,可根据客户端的IP在服务端保存的IP中验证是否为合法请求。例如:

 

代码
///  <summary>
///  发送短信服务
///  </summary>
///  <param name="mobiles"> 接收的手机号码 </param>
///  <param name="smsContent"> 短信内容 </param>
///  <param name="sendTime"> 发送时间,为空则立刻发送 </param>
///  <param name="error"> 当请求失败时的详细失败原因 </param>
///  <returns></returns>
[WebMethod(Description  =  " 发送短信 " )]
public  bool  SendSms( string  mobiles,  string  smsContent, DateTime ?  sendTime,  ref  string  error)
{
// 根据客户端请求的IP进行跟服务端所配置的IP进行验证(IP可配置在文件中或数据库)
if  (Context.Request.UserHostAddress  !=  " 218.18.69.86 " )
{
// 不是合法客户端请求时,将拒绝对此请求提供服务
error  =  " 非法请求 " ;
return  false ;
}
// 如果是合法请求,则继续为此请求提供服务
using  (SmsFacade smsFacade  =  new  SmsFacade())
{
if  ( ! smsFacade.SendSms(smsContent, mobiles, sendTime))
{
error
  =  smsFacade.PromptInfo.CustomMessage;
return  false ;
}
}
return  true ;
}

 

 

 

 

  3.级别:高

   使用场合:提供第三方平台使用,完全开发性

   验证方式:身份登陆验证

  具体说明:我们可以在服务端建一张第三方用户信息表,包含用户账号和密码等相关信息。客户端请求时,必须将账号和密码发送到服务端进行登陆,来验证是否为合法请求。例如:

 

代码
[WebMethod(Description  =  " 发送短信 " )]
public  bool  SendSms( string  userCode,  string  userPwd,  string  mobiles,  string  smsContent, DateTime ? sendTime,  ref  string  error)
{
// 先根据客户端发送用户账号和密码登陆
UserFacade userFacade  =  new  UserFacade();
if  ( ! userFacade.Login(userCode, userPwd))
{
// 登陆失败,将拒绝对此请求提供服务
error  =  " 非法请求,登陆失败 " ;
return  false ;
}
using  (SmsFacade smsFacade  =  new  SmsFacade())
{
if  ( ! smsFacade.SendSms(smsContent, mobiles, sendTime))
{
error
  =  smsFacade.PromptInfo.CustomMessage;
return  false ;
}
}
return  true ;
}
 
以上来自网络信息:
其实同样可以使用SOAPHEADER的方式提高安全性!
相关文章
|
XML API 数据格式
十九、.net core使用SoapCore开发webservice接口,以及使用HttpClientFactory动态访问webservice接口
使用SoapCore实现在.net core平台下开发webservice;以及使用HttpClientFactory动态访问webservice。首先,需要在包项目下面引用SoapCore:
1074 0
十九、.net core使用SoapCore开发webservice接口,以及使用HttpClientFactory动态访问webservice接口
|
API 数据格式 XML
ArcGIS API for Silverlight 调用WebService出现跨域访问报错的解决方法
原文:ArcGIS API for Silverlight 调用WebService出现跨域访问报错的解决方法       群里好几个朋友都提到过这样的问题,说他们在Silverlight中调用了WebService方法,总报这个错误,贴图如下: 解决办法:      1、确定你的Silver...
1176 0
|
数据安全/隐私保护 .NET 开发框架
webService访问加密-Soapheader
原文:webService访问加密-Soapheader 转载:http://blog.csdn.net/wanderocn/article/details/6584098 WebService head加密,可以对 WebService设置访问用户名和密码,增强 WebService的安全性 使 WebService只能被授权用户使用。
1162 0
|
API 数据格式 XML
ArcGIS API for Silverlight 调用WebService出现跨域访问报错的解决方法
      群里好几个朋友都提到过这样的问题,说他们在Silverlight中调用了WebService方法,总报这个错误,贴图如下: 解决办法:      1、确定你的Silverligh...
755 0
Web.config中设置启用webservice远程调试访问
 在.NET 中已经默认将webservice的远程调试功能关闭,有的时候我们需要远程调试程序的时候,就需要打开此功能我们只需在webservice的项目的中添web.
855 0
|
7月前
|
缓存 应用服务中间件 数据库
Python Web Service开发及优化
随着互联网的快速发展,Web服务已成为现代技术的核心。Python作为一种功能强大且易于学习的编程语言,在Web服务开发领域占据着重要地位。Python Web服务开发的重要性在于它能够提供高效、可扩展且易于维护的解决方案。本篇博客将探讨如何使用Python的Flask框架、Gunicorn WSGI服务器和Nginx网页服务器来实现高性能的Web服务。
|
7月前
|
XML Java 应用服务中间件
WebService - Axis2基于JAX-WS开发WebService并发布多个WebService
WebService - Axis2基于JAX-WS开发WebService并发布多个WebService
95 0