WebService的安全设置-创新互联
1、通过SoapHeader增强WebService的安全性。
企业建站必须是能够以充分展现企业形象为主要目的,是企业文化与产品对外扩展宣传的重要窗口,一个合格的网站不仅仅能为公司带来巨大的互联网上的收集和信息发布平台,成都创新互联公司面向各种领域:玻璃钢雕塑等成都网站设计、营销型网站解决方案、网站设计等建站排名服务。代码示例如下:
(1)、定义自己的SoapHeader派生类。
////// 定义自己的SoapHeader派生类 /// public class MySoapHeader : System.Web.Services.Protocols.SoapHeader { private string _UserID = string.Empty; private string _PassWord = string.Empty; ////// 构造函数 /// public MySoapHeader() { } ////// 构造函数 /// /// 用户ID /// 加密后的密码 public MySoapHeader(string nUserID, string nPassWord) { Initial(nUserID, nPassWord); } #region 属性 ////// 用户名 /// public string UserID { get { return _UserID; } set { _UserID = value; } } ////// 加密后的密码 /// public string PassWord { get { return _PassWord; } set { _PassWord = value; } } #endregion #region 方法 ////// 初始化 /// /// 用户ID /// 加密后的密码 private void Initial(string nUserID, string nPassWord) { UserID = nUserID; PassWord = nPassWord; } ////// 验证用户名密码是否正确 /// /// 用户ID /// 加密后的密码 /// 返回的错误信息 ///用户名密码是否正确 private bool IsValid(string nUserID, string nPassWord, out string nMsg) { nMsg = ""; try { //判断用户名密码是否正确 if (nUserID == "admin" && nPassWord == "admin") { return true; } else { nMsg = "对不起,你无权调用此Web服务,可能有如下原因:\n 1.您的帐号被管理员禁用。\n 2.您的帐号密码不正确"; return false; } } catch { nMsg = "对不起,你无权调用此Web服务,可能有如下原因:\n 1.您的帐号被管理员禁用。\n 2.您的帐号密码不正确"; return false; } } ////// 验证用户名密码是否正确 /// ///用户名密码是否正确 public bool IsValid(out string nMsg) { return IsValid(_UserID, _PassWord, out nMsg); } #endregion }
(2)、添加基于SoapHeader验证的WebService接口的方法。
////// 通过SoapHeader来增强Web Service的安全性 /// [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [ToolboxItem(false)] public class WebService_Soap : System.Web.Services.WebService { //声明Soap头实例 public MySoapHeader myHeader = new MySoapHeader(); //普通方法,不需要SoapHeader验证 [WebMethod(Description = "根据产品编号查询产品的价格")] public string GetProductPrice(string ProductId) { Products pro = new Products(); return pro.GetPrice(ProductId); } //需要SoapHeader验证 [SoapHeader("myHeader")] [WebMethod(Description = "根据产品编号查询产品的价格", EnableSession = true)] public string GetProductPrice2(string ProductId) { string msg = ""; //验证是否有权访问 if (!myHeader.IsValid(out msg)) { return msg;//返回错误信息 } Products pro = new Products(); return pro.GetPrice(ProductId); } }
(3)、客户端调用具有SoapHeader的WebService。
//创建myService对象 ProductServiceSoap.WebService_Soap service = new ProductServiceSoap.WebService_Soap(); //创建soap头对象 ProductServiceSoap.MySoapHeader header = new ProductServiceSoap.MySoapHeader(); //设置soap头变量 header.PassWord = "admin1"; header.UserID = "admin1"; service.MySoapHeaderValue = header; //调用web 方法 string strPrice = service.GetProductPrice2("001");
2、采用SSL实现加密传输。
操作文档下载地址:http://down.51cto.com/data/1016635
3、访问IP限制。
优点:简单,防止非指定客户机器访问。
缺点:IP是可以伪造的;维护IP地址表比较繁琐,且只适合固定IP访问者的情况。
代码示例如下:
public bool ValidateIP(int UserID, out string exceptionInfo) { exceptionInfo = ""; string uip = HttpContext.Current.Request.UserHostAddress; //获取IP地址表 Common dal = new Common(); Listips = dal.GetPermitIp(UserID); if (ips == null || ips.Count == 0) { exceptionInfo = "调用Web服务的客户端IP未被允许,无法访问!"; return false; } if (ips.Contains(uip)) { return true; } exceptionInfo = "调用Web服务的客户端IP未被允许,无法访问!"; return false; }
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
当前文章:WebService的安全设置-创新互联
链接分享:http://scgulin.cn/article/ejcdj.html