日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

WCF Data Service安全分析和说明

發布時間:2025/6/17 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WCF Data Service安全分析和说明 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先需要知道服務運行在asp.net的承載環境中,具體參考:

http://blogs.msdn.com/b/wenlong/archive/2006/01/23/516041.aspx

關于安全有個詳細的參考地址:

http://blogs.msdn.com/b/astoriateam/archive/tags/authentication/

講述了涉及安全各個方面,是個很好的資料

本文就從常見的涉及安全的幾個方面進行分析和說明

服務端安全

由于服務承載在IIS中,因此可以使用Asp.net的安全模型,如一般的Forms驗證

對于服務一般的處理是,把服務放到一個獨立目錄下如Services,使用Services\web.config設置目錄的安全性,如下授予admins角色和d用戶以訪問權限:

<?xml version="1.0"?> <configuration> ?????? <system.web> ????????????? <authorization> ??????????????????? <allow roles="admins"/> ??????????????????? <allow users="d"/> ??????????????????? <deny users="*"/> ????????????? </authorization> ?????? </system.web> </configuration>

以上設置后,匿名用戶就不可以訪問了

服務對象的安全
DataService<T>對象的設置,僅授予可以察看的數據對象以相應的權限,這樣客戶端就不會看到其他的對象,增刪改僅在必須的時候開放,或者把增 刪改放到一個獨立的不同權限的服務上 下例是設置一些限制的情況,如果不想讓客戶端看到更多的信息,可以把”*”條件移除,這樣就只能看到設置的對象了 ????????????? public static void InitializeService(DataServiceConfiguration config) ????????????? { ???????????????????????????????????????? config.SetEntitySetAccessRule("Orders", EntitySetRights.AllRead); ???????????????????? config.SetServiceOperationAccessRule("*", ServiceOperationRights.AllRead); ???? config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2; ????????????? }
默認查詢的限制

對于授予了權限的實體,也可以根據角色或用戶限定不同的范圍[如果不限制的話,如果不設置的話,默認可以訪問到整個表內容

下例設置后http://localhost:1287/Services/NorthWindService.svc/Orders 查詢就會根據用戶情況返回不同的值,這樣可以減少了數據暴露的范圍

?????? [QueryInterceptor("Orders")] ????????????? public Expression<Func<Order, bool>> OrderFilter() ????????????? { ??????????????????? if (Roles.IsUserInRole("admins")) ?????????????????????????? return (Order od) => true; ??????????????????? else ?????????????????????????? return (Order od) => od.ShipName.StartsWith("H"); ????????????? } 當然由于當前在WEB環境中,也可以直接使用HttpContext.Current.User或者HttpContext.Current其他對象完成用戶的限制等安全處理
自定義查詢

這個根據查詢條件自然就限制住了,定義linq查詢條件時一定要把數據范圍限制作

設置安全后客戶端的訪問

? 網頁形式:瀏覽器中訪問網站時,會按照asp.net的安全模型進行處理,導航到登陸頁面,輸入用戶名、密碼,然后可以訪問服務

? 一般的應用程序:如Console程序、WinForm程序的處理方式有些差別,最簡單的步驟如下:

1、服務端開放Authentication_JSON_AppService.axd服務,只要web.config增加以下配置節后,客戶端即可訪問

?????? <system.web.extensions> ????????????? <scripting> ??????????????????? <webServices> ?????????????????????????? <authenticationService enabled="true" requireSSL="false"/> ??????????????????? </webServices> ????????????? </scripting> ?????? </system.web.extensions>

2、客戶端設置”Client Application Service”[客戶端需要引用完整的.net框架,而不是Profile框架],再引用System.Web.dll

如上圖,URL設置到服務的根地址

具體的代碼:

驗證用戶

System.Web.Security.Membership.ValidateUser("d", "demo1234!");

對Data Service的客戶端代理OnContextCreated方法增加處理,把登陸的信息設置上

namespace TestDS.North {public partial class NorthwindEntities{partial void OnContextCreated(){this.SendingRequest +=new EventHandler<SendingRequestEventArgs>(OnSendingRequest);}void OnSendingRequest(object sender, SendingRequestEventArgs e){ClientFormsIdentity id = Thread.CurrentPrincipal.Identity as ClientFormsIdentity;if(id!=null){((HttpWebRequest)e.Request).CookieContainer = id.AuthenticationCookies;}}} } 以上驗證后就可正常的訪問服務了 NorthwindEntities ctx = new NorthwindEntities(u); var ods = from c in ctx.Orders select c; foreach (var o in ods) {Console.WriteLine(o.ShipName); }

轉載于:https://www.cnblogs.com/2018/archive/2010/10/22/1858070.html

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的WCF Data Service安全分析和说明的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。