zoukankan      html  css  js  c++  java
  • asp.net C# webservice安全性方案

    做项目时,经常会用到WebService来通讯,但WebService发布后为了能调用,一般都通过发布到IIS后调用 的。在IIS里可以通过匿名访问,但这样大家都可能访问,不安全,因此可以提供操作系统分配一个帐号来登录到IIS 。这只是对访问服务器上的文件进行了限制,以前我也是采用这种方式,上次看到另 一种方法来防止 别人调用WebService,就是对方面进行加密,总结下来,对于WebService可以采用以下二个方法来有效防止别人调用:

        第一、禁止匿名访问,对WebService进行认证,这步主要是通过操作系统的安全机制来实现的,也就是只有满足一定要求的帐号才能访问到服务器,才能访问IIS,这个可以通过访问我以前的随笔C#调用Web Service时的身份验证 ,在这里有详细的说明,在些不我说了;

        第二、在第一种方法的基础上对WebService里的方法进行加密,这里面方法很多,下面提供一种比较常用的方法。在调用方法时多提供二个参数用户加密解密用(当然了提供几个参数看自己的需要而定)。比如有个WebService方法是根据顾客ID获取数据库中的顾客的详细资料为GetCustomerDetailByCustomerID(string custID);如果只提供一个参数,则很容易被别人访问调用,从而顾客资料很容易被别人获取,因此我们对这个方法进行加密GetCustomerDetailByCustomerID(string scustID,string custID,ecustID);这样,只有提供正确的scustID与ecustID这二个参数才能成功调用这个方法,而对于这二个参数scustID与ecustID,则可以通过加密方法生成一个字符串,如scustID='C39134558',ecustID='C39223525',只有这二个参数满足一定的条件时才算验证通过,而对于参数来说,我们也可以提供一个验证,如果scustID里的值C39134558,前面三位必须是C39,紧跟5位13455则相加后的值18进行位操作如,对值18加一个因子,如1,则出现以下的运行:(18+1)%11==8,这样只有最后一位为8才算这个参数值是符合要求的,所以随便输入一个参数如:C39134556,则因为不符合要求,所以验证不能通过。在这里即使二个参数scustID='C39134558',ecustID='C39223525'都对了,则还需要通过这二个参数的进一步的验证才能算成功。至于这二个满足什么要求,一种是可以采用现有的加密机制,也可以自己写一个加密类来袜。 上面只是举一个简单的例子。

         通过上面的二个步骤,则可以实现比较安全WebService调用了。

  • 相关阅读:
    常用知识点集合
    LeetCode 66 Plus One
    LeetCode 88 Merge Sorted Array
    LeetCode 27 Remove Element
    LeetCode 26 Remove Duplicates from Sorted Array
    LeetCode 448 Find All Numbers Disappeared in an Array
    LeetCode 219 Contains Duplicate II
    LeetCode 118 Pascal's Triangle
    LeetCode 119 Pascal's Triangle II
    LeetCode 1 Two Sum
  • 原文地址:https://www.cnblogs.com/truth/p/1897537.html
Copyright © 2011-2022 走看看