开发者社区> 冰点沐雪> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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 stringerror)
{
//根据客户端发送的验证码进行根服务器的验证码进行匹配
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的方式提高安全性!

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
SQL service
依赖关系解决================================================================================================================================================...
670 0
Web Service 返回参数
  我用使用Web Service 就是为了让其在服务器端处理,然后返回一个结果,但是在服务器端返回的数据类型是有限制的,因为客户端可能并不能识别这种类型,比如Dictionary,当然返回普通的int,string是没有问题的,但是有的时候我们返回的比较复杂,那么自己构建XML然后在前端解析XML。
589 0
web service2
引用:http://baike.baidu.com/view/67105.htm 网络管理员行业对网络管理员的要求基本就是大而全,不需要精通,但什么都得懂一些。所以,总结下来,一个合格的网络管理员最好在网络操作系统、网络数据库、网络设备、网络管理、网络安全、应用开发等六个方面具备扎实的理论知识和应用技能,才能在工作中做到得心应手,游刃有余。
839 0
+关注
冰点沐雪
专业从事软件开发(asp.net)近10年。
434
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载