1、通過SoapHeader增強(qiáng)WebService的安全性。
企業(yè)建站必須是能夠以充分展現(xiàn)企業(yè)形象為主要目的,是企業(yè)文化與產(chǎn)品對外擴(kuò)展宣傳的重要窗口,一個合格的網(wǎng)站不僅僅能為公司帶來巨大的互聯(lián)網(wǎng)上的收集和信息發(fā)布平臺,成都創(chuàng)新互聯(lián)公司面向各種領(lǐng)域:玻璃鋼雕塑等成都網(wǎng)站設(shè)計、營銷型網(wǎng)站解決方案、網(wǎng)站設(shè)計等建站排名服務(wù)。代碼示例如下:
(1)、定義自己的SoapHeader派生類。
////// 定義自己的SoapHeader派生類 /// public class MySoapHeader : System.Web.Services.Protocols.SoapHeader { private string _UserID = string.Empty; private string _PassWord = string.Empty; ////// 構(gòu)造函數(shù) /// public MySoapHeader() { } ////// 構(gòu)造函數(shù) /// /// 用戶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 = "對不起,你無權(quán)調(diào)用此Web服務(wù),可能有如下原因:\n 1.您的帳號被管理員禁用。\n 2.您的帳號密碼不正確"; return false; } } catch { nMsg = "對不起,你無權(quán)調(diào)用此Web服務(wù),可能有如下原因:\n 1.您的帳號被管理員禁用。\n 2.您的帳號密碼不正確"; return false; } } ////// 驗證用戶名密碼是否正確 /// ///用戶名密碼是否正確 public bool IsValid(out string nMsg) { return IsValid(_UserID, _PassWord, out nMsg); } #endregion }
(2)、添加基于SoapHeader驗證的WebService接口的方法。
////// 通過SoapHeader來增強(qiáng)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 = "根據(jù)產(chǎn)品編號查詢產(chǎn)品的價格")] public string GetProductPrice(string ProductId) { Products pro = new Products(); return pro.GetPrice(ProductId); } //需要SoapHeader驗證 [SoapHeader("myHeader")] [WebMethod(Description = "根據(jù)產(chǎn)品編號查詢產(chǎn)品的價格", EnableSession = true)] public string GetProductPrice2(string ProductId) { string msg = ""; //驗證是否有權(quán)訪問 if (!myHeader.IsValid(out msg)) { return msg;//返回錯誤信息 } Products pro = new Products(); return pro.GetPrice(ProductId); } }
(3)、客戶端調(diào)用具有SoapHeader的WebService。
//創(chuàng)建myService對象 ProductServiceSoap.WebService_Soap service = new ProductServiceSoap.WebService_Soap(); //創(chuàng)建soap頭對象 ProductServiceSoap.MySoapHeader header = new ProductServiceSoap.MySoapHeader(); //設(shè)置soap頭變量 header.PassWord = "admin1"; header.UserID = "admin1"; service.MySoapHeaderValue = header; //調(diào)用web 方法 string strPrice = service.GetProductPrice2("001");
2、采用SSL實現(xiàn)加密傳輸。
操作文檔下載地址:http://down.51cto.com/data/1016635
3、訪問IP限制。
優(yōu)點:簡單,防止非指定客戶機(jī)器訪問。
缺點:IP是可以偽造的;維護(hù)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 = "調(diào)用Web服務(wù)的客戶端IP未被允許,無法訪問!"; return false; } if (ips.Contains(uip)) { return true; } exceptionInfo = "調(diào)用Web服務(wù)的客戶端IP未被允許,無法訪問!"; return false; }
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。