自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

提高WCF安全性認知程度

開發(fā) 開發(fā)工具
WCF安全性是非常重要的一個考慮因素。那么,我們應(yīng)該如何應(yīng)對這一安全方面的操作呢?在文章中做了詳細介紹,希望對大家有所幫助。

對于開發(fā)人員來說,最重要的當屬程序的安全性,一個非常繁雜的程序如果沒有考慮到安全性,則一切都暴露在高風(fēng)險中。在這里就詳細了解一下WCF安全性的相關(guān)知識。#t#

因為性能,往往可以通過一些別的方式,例如添加一臺服務(wù)器作負載均衡來解決(順便插一句,我現(xiàn)在覺得對于企業(yè)來說,能夠用錢解決的往往就不是問題了),或者在之后的版本中進行優(yōu)化;但是如果出了安全性方面的漏洞,很可能就已經(jīng)造成了無法彌補的損失。

試想,如果Windows Live Passport出現(xiàn)了安全上的漏洞導(dǎo)致用戶信息泄露,這將會引出多大的風(fēng)波,對于微軟來說會造成多少名譽上的損害。但是如果性能上出現(xiàn)了問題——這方面例如Windows Live Space或Hotmail的早期版本都不怎么樣,但是在優(yōu)化之后還是吸引了大量的用戶群體。

WCF安全性是如此的重要,自然WCF也會為它提供了良好的支持,否則也無法稱之為一個成熟的模型了(我認為,微軟希望,也正在把WCF變成.NET或者說Windows平臺下分布式通信的事實標準)。

但是雖然WCF提出了豐富而強大的安全性支持,但是如果使用不當,依舊會產(chǎn)生安全方面的問題(同樣的例子還有Sql注入,要保證安全型還是必須通過良好的編程實踐來達成),甚至還不如不依賴WCF安全性的功能,直接使用傳統(tǒng)的方式,例如使用硬件或軟件防火墻來阻止非法的連接。

反過來說,選擇什么樣的WCF安全性實踐也是要考慮到項目的實際情況。例如有的時候我們的確可以使用傳統(tǒng)的方式來保證安全性,再今后的版本中再采用高級的實踐——尤其我們現(xiàn)在有了WCF提供的模型,我們的優(yōu)化可能只是部署一個新的程序集,然后更新一下配置而已。

WCF提出的通信模型主要可以分為兩大部分:Service Model和Channel Layer。它們各司其職,“互不干涉內(nèi)政”,因此,能夠自由地組合與擴展,使開發(fā)人員能夠利用WCF提出的模型來輕松實現(xiàn)強大的通信功能。

不過事實上,按照官方的說法,Channel Layer是Service Model的組成部分(而且官方的說法的確還是有道理?。俏以诹私饬诉@些內(nèi)容之后還是認為將兩者概念分開為好,希望能夠就這方面的概念問題和大家討論一下。

WSDL是描述一個服務(wù)的XML格式的語言。通過一個服務(wù)的WSDL我們可以得知這個服務(wù)的地址、服務(wù)使用的協(xié)議以及服務(wù)中的各種具體定義(例如定義了哪些消息等等)。顯然,如果每次生成服務(wù)時都要自己編寫代碼輸出大段復(fù)雜的WSDL,或者在使用服務(wù)時都要解析WSDL并且在請求時還需要自己生成SOAP內(nèi)容,這樣的開發(fā)效率就實在是太低了。

因此,成熟的框架會提供一種“抽象”機制,使開發(fā)人員能夠輕松的定義服務(wù),盡可能的將注意力集中在業(yè)務(wù)邏輯的實現(xiàn)上。例如使用ASP.NET釋放Web Services,或者利用.NET Framework中的wsdl.exe根據(jù)某個服務(wù)的WSDL描述來生成代理。這些框架和工具都能夠大大提高我們的開發(fā)效率。

WCF中的Service Model就是這樣的一種抽象。簡單地說,它可以被認作是一個與WSDL產(chǎn)生映射的模型。在Service Model中,與WSDL各部分相對應(yīng)的概念被稱作為address、binding和contract,這就是被各種資料中所提到的“A、B、C”。除了提供了“定義”這樣的模型(用來與WSDL對應(yīng))之外,Service Model還負責了上述模型與外部請求或者回復(fù)信息的轉(zhuǎn)化。

例如,我們的Host一旦接受到了一個請求,那么它會把這個請求內(nèi)容反序列化成為一個Message類型的對象,并交給Service Model處理。此時Service Model開始工作,例如它會構(gòu)造出處理這個請求的環(huán)境,識別出該用哪個類型來處理請求,選擇或者創(chuàng)建一個類型的實例,確定應(yīng)該調(diào)用的方法,隨后調(diào)用方法,得到一個結(jié)果對象。

然后Service Model同樣負責將這個結(jié)果對象轉(zhuǎn)化為一個Message類型的對象,最終將其序列化并輸出(整個過程有十多個步驟,我這里只是提到了一些最重要并且最容易理解的環(huán)節(jié)。由此可見WCF的可擴展性是多么的強大)。如果使用WCF生成調(diào)用服務(wù)的代理,那么Service Model工作性質(zhì)還是差不多,只是方向相反而已。

那么是由什么組件負責將一個外部的請求反序列化成為一個Message對象,待方法調(diào)用完成之后,又將表示結(jié)果的Message序列化成為輸出的內(nèi)容呢(如果使用WCF作為客戶端代理,那么就變成將Message序列化為請求的內(nèi)容,并且將收到的回復(fù)內(nèi)容反序列化成Message對象)?這就是 Channel Layer的作用。

Channel Layer定義個一個由一系列Channel組成的Stack,Message對象在穿越這個Channel Stack的時候會經(jīng)過每個Channel的處理,一步步地“形變”,最終成為了我們需要“數(shù)據(jù)形態(tài)”。例如服務(wù)返回的Message對象在經(jīng)過了功能為 SOAP XML轉(zhuǎn)化的Channel之后便成了SOAP XML的形式,然后再經(jīng)由一個負責加密的Channel則成為了Encrypted數(shù)據(jù)(當然實際的步驟也沒有那么簡單),最終經(jīng)由一個負責TCP/IP信道傳送的Channel輸送出去。

試想,如果我們自定義一個Channel將Message轉(zhuǎn)化為JSON格式,然后再使用一個Channel通過一個HTTP通道返回數(shù)據(jù),那么不就能夠支持ASP.NET AJAX的Web Service請求功能了嗎?沒錯,的確可以這樣。事實上在新的ASP.NET Futures類庫中就提供了這樣的組件,它們是學(xué)習(xí)如何擴展WCF安全性的優(yōu)秀范例。不過這已經(jīng)是題外話了,有機會我們可以另起一個話題再說。

責任編輯:曹凱 來源: 路由網(wǎng)
相關(guān)推薦

2009-12-07 16:48:33

WCF 安全性

2018-02-27 14:50:16

數(shù)據(jù)庫MySQL安全性

2022-08-03 14:33:21

數(shù)據(jù)安全數(shù)據(jù)泄露漏洞

2022-03-10 14:17:11

區(qū)塊鏈數(shù)據(jù)安全技術(shù)

2023-07-13 15:22:45

2012-07-30 10:07:01

2020-02-27 14:59:14

物聯(lián)網(wǎng)海上安全性物聯(lián)網(wǎng)應(yīng)用

2024-09-25 08:46:31

2011-10-11 09:13:15

2012-05-14 11:39:58

2012-08-22 10:27:16

2011-05-20 21:27:33

2022-07-13 16:39:54

數(shù)據(jù)中心數(shù)據(jù)安全

2021-10-12 16:25:35

物聯(lián)網(wǎng)物聯(lián)網(wǎng)安全IoT

2023-02-20 17:12:08

2010-09-02 13:31:54

2009-10-12 12:51:50

2023-11-07 14:14:22

2011-03-11 14:05:41

2013-04-25 10:11:12

托管虛擬桌面HVDGartner
點贊
收藏

51CTO技術(shù)棧公眾號