亚洲成精品动漫久久精久,九九在线精品视频播放,黄色成人免费观看,三级成人影院,久碰久,四虎成人欧美精品在永久在线

掃一掃
關(guān)注微信公眾號(hào)

XML Web站點(diǎn)開(kāi)發(fā)要保證安全性(3)
2006-11-07   IT168

  XML Web 服務(wù)的用戶需要知道您的服務(wù)所發(fā)送和接收的 SOAP 消息的格式,以及您的服務(wù)的終點(diǎn)位置。這就足夠了。任何其他信息都只會(huì)為潛在的黑客提供攻擊手段以毀壞您的系統(tǒng)。要進(jìn)行自我保護(hù),應(yīng)限制返回與平臺(tái)有關(guān)的信息,并消除計(jì)算機(jī)上的多余內(nèi)容,包括刪除任何有助于他人識(shí)別您的系統(tǒng)的默認(rèn)虛擬目錄或腳本映射。

  開(kāi)發(fā)問(wèn)題  

  對(duì)黑客來(lái)說(shuō),服務(wù)器的脆弱性與服務(wù)器上運(yùn)行的代碼質(zhì)量是成反比的。它包括基礎(chǔ)系統(tǒng)(操作系統(tǒng)、Web 服務(wù)器和正在使用的 SOAP 工具)的質(zhì)量,以及為特定應(yīng)用程序編寫(xiě)的代碼的質(zhì)量。還可能包括服務(wù)器上運(yùn)行的所有其他代碼,即使該代碼不是應(yīng)用程序的一部分。但是從開(kāi)發(fā)人員的角度而言,我們希望考慮我們能控制的問(wèn)題,以及能執(zhí)行哪些特殊的操作以保證代碼的高質(zhì)量,避免增加 XML Web 服務(wù)和服務(wù)器上正在運(yùn)行的其他所有應(yīng)用程序的脆弱性。

  緩沖區(qū)溢出  

  服務(wù)器上最可怕的攻擊類型是遠(yuǎn)程用戶可以執(zhí)行惡意代碼導(dǎo)致系統(tǒng)完全破壞的攻擊。大多數(shù)此類攻擊都是由于緩沖區(qū)溢出錯(cuò)誤造成的。這種錯(cuò)誤的典型示例是:在 C 代碼中為某本地變量分配了固定長(zhǎng)度,然后該代碼將 HTTP 請(qǐng)求中的信息復(fù)制到該變量中。如果您認(rèn)為請(qǐng)求中的數(shù)據(jù)不會(huì)比您設(shè)定的值大,而對(duì)您的服務(wù)器的惡意請(qǐng)求可以超過(guò)該值,并導(dǎo)致其發(fā)送的數(shù)據(jù)在寫(xiě)入到已分配的緩沖區(qū)時(shí)超出末端。對(duì)于本地變量,緩沖區(qū)存儲(chǔ)在堆棧中,而堆棧中還存儲(chǔ)了當(dāng)前函數(shù)結(jié)束時(shí)要返回的代碼地址。通過(guò)寫(xiě)入時(shí)超出本地變量緩沖區(qū)的末端,黑客可以覆蓋返回地址并使函數(shù)返回到他想要的任何地址,包括 Windows CreateProcess 函數(shù)的地址。要傳遞到 CreateProcess 函數(shù)的參數(shù)也會(huì)存儲(chǔ)在堆棧上,如果黑客覆蓋了存儲(chǔ)這些參數(shù)的位置,則可以有效啟動(dòng)服務(wù)器上他們想要啟動(dòng)的任何應(yīng)用程序。

  要避免這類攻擊,請(qǐng)不要對(duì)從請(qǐng)求中讀取的數(shù)據(jù)做任何假設(shè),然后確保緩沖區(qū)的處理代碼中沒(méi)有錯(cuò)誤。對(duì)于 C/C++ 程序員,應(yīng)對(duì)以下函數(shù)格外小心:strcpy、strcat、memcpy、gets、sprintf、scanf 以及所有這些函數(shù)的變體(如 lstrcpy、wcscpy、CopyMemory 等等)。請(qǐng)注意 strncpy 函數(shù)及其他“n”函數(shù)只是略好一些,因?yàn)樵谶@些方案中長(zhǎng)度變量常常是由程序決定的,而且仍有可能覆蓋固定長(zhǎng)度的緩沖區(qū)。“n”函數(shù)中的長(zhǎng)度參數(shù)應(yīng)根據(jù)輸出緩沖區(qū)的大小而定,而非傳入字符串的大小。如果要使用這些函數(shù),請(qǐng)使用“n”版本并從堆中動(dòng)態(tài)分配您的緩沖區(qū)以避免可能的堆棧溢出。另外,Microsoft® Visual Studio .NET C 編譯器支持新的 /GS 開(kāi)關(guān),該開(kāi)關(guān)可使代碼不會(huì)出現(xiàn)許多常見(jiàn)的緩沖區(qū)溢出問(wèn)題。

  利用 .NET 框架和管理代碼,可以消除大多數(shù)潛在的緩沖區(qū)溢出問(wèn)題。Microsoft 設(shè)計(jì) .NET 框架時(shí),意識(shí)到了垃圾回收的好處,以及如何消除由傳統(tǒng)的緩沖區(qū)處理方式引起的問(wèn)題,所以他們提供了管理代碼的能力。必須注意管理代碼和非管理代碼間的交互問(wèn)題。但是至少可以在您需要時(shí)適當(dāng)保證應(yīng)用程序的安全。  

  檢查錯(cuò)誤  

  檢查所有調(diào)用函數(shù)的返回代碼。如果正在調(diào)用 Win32 API,請(qǐng)確保調(diào)用已成功完成。如果正在分配內(nèi)存,請(qǐng)確保未返回 NULL 值。如果正在進(jìn)行 COM 調(diào)用,特別是正在使用 Microsoft Visual Basic進(jìn)行調(diào)用并且已指定“On Error Resume Next”語(yǔ)句,請(qǐng)確保未出現(xiàn)異常。同樣,不要對(duì)這類調(diào)用的結(jié)果做任何假設(shè)。

  如果正在調(diào)用 Win32 安全函數(shù),應(yīng)特別小心。例如,如果正在調(diào)用 ImpersonateLoggedOnUser,應(yīng)檢查返回代碼是否存在錯(cuò)誤,否則將難以為用戶提供較高的安全環(huán)境。當(dāng)您的 Web 應(yīng)用程序配置為在 IIS 上以“進(jìn)程內(nèi)”方式運(yùn)行時(shí)要格外注意這一點(diǎn),因?yàn)榇a可能以本地系統(tǒng)帳戶運(yùn)行,這在本地計(jì)算機(jī)上幾乎沒(méi)有限制。還應(yīng)注意某些交叉的 COM 調(diào)用同樣可能在具有較高權(quán)限的線程中運(yùn)行。

  盡早、盡快地驗(yàn)證輸入  

  XML Web 服務(wù)接收請(qǐng)求時(shí),您應(yīng)做的第一件事就是驗(yàn)證提交的數(shù)據(jù)。根據(jù)架構(gòu)進(jìn)行 Web 服務(wù)說(shuō)明語(yǔ)言 (WSDL) 驗(yàn)證將會(huì)捕獲許多錯(cuò)誤,但是您應(yīng)立即執(zhí)行所需的任何應(yīng)用程序級(jí)的驗(yàn)證。包括檢查特殊字符、檢查特定范圍內(nèi)的數(shù)值、檢查字符串長(zhǎng)度,等等。即使認(rèn)為所有請(qǐng)求必須來(lái)自特定的應(yīng)用程序,也應(yīng)在進(jìn)行證明之前假定傳入數(shù)據(jù)是無(wú)效的。事實(shí)是對(duì) XML Web 服務(wù)的請(qǐng)求可以來(lái)自任何地方。如果對(duì)數(shù)據(jù)進(jìn)行假設(shè),應(yīng)假定數(shù)據(jù)可能來(lái)自某個(gè)惡意用戶。

  參數(shù)驗(yàn)證代碼能夠快速地完成也是很重要的。識(shí)別無(wú)效請(qǐng)求的速度越快越好。否則 XML Web 服務(wù)容易遭受拒絕服務(wù)攻擊。如果您的服務(wù)器處理非法請(qǐng)求的時(shí)間較長(zhǎng),則很可能不能為合法請(qǐng)求提供服務(wù)。始終應(yīng)用與專用數(shù)據(jù)同等的安全級(jí)別來(lái)對(duì)待消耗時(shí)間和資源的操作。如果必須執(zhí)行耗時(shí)的 SQL 查詢,或者某個(gè)操作要求具有很強(qiáng)的處理能力,則首先要確保請(qǐng)求的合法性。用戶是否是合法用戶?對(duì)請(qǐng)求進(jìn)行身份驗(yàn)證不僅能防止無(wú)效用戶使用您服務(wù)器上的資源,并且提供了跟蹤審核日志中的錯(cuò)誤使用情況的能力,使您可以發(fā)現(xiàn)特定用戶非法使用資源的情況。如果正在驗(yàn)證輸入,應(yīng)首先驗(yàn)證用戶的憑據(jù)。如果使用普通 HTTP 身份驗(yàn)證機(jī)制,則在代碼調(diào)用之前就會(huì)為您進(jìn)行用戶身份驗(yàn)證。

  關(guān)閉后門(mén)  

  有時(shí)在項(xiàng)目的開(kāi)發(fā)階段提供一種方法,以便在服務(wù)器上解決某些問(wèn)題是非常合適的。例如,XML Web 服務(wù)經(jīng)常會(huì)生成一個(gè)密鑰以便在多次調(diào)用之間標(biāo)識(shí)同一個(gè)用戶,或在這些調(diào)用之間維護(hù)某種狀態(tài)。為方便調(diào)試經(jīng)常會(huì)添加一段額外的代碼以接受由所有密鑰組成的密鑰,而不是生成真正的密鑰。但是,如果確實(shí)出于合法調(diào)試的目的提供了能避免某些檢測(cè)的機(jī)制,請(qǐng)確保在 XML Web 服務(wù)生效之前刪除這些后門(mén)。

  同樣,請(qǐng)避免提供能忽略安全性問(wèn)題的精巧機(jī)制,即使您認(rèn)為從長(zhǎng)遠(yuǎn)來(lái)講它有助于支持服務(wù)的長(zhǎng)期運(yùn)行。請(qǐng)考慮 XML Web 服務(wù)正在進(jìn)行應(yīng)用程序級(jí)身份驗(yàn)證的情況。以下做法可能是很吸引人的:即將秘密的管理員級(jí)用戶名硬編碼到您的代碼中,這樣就可以使那些忘記了自己的管理員帳戶密碼的人能夠進(jìn)入系統(tǒng)。但是,第一個(gè)用戶使用了此后門(mén)后,機(jī)密就泄露了,此代碼的所有其他用戶將很容易受到攻擊。

  事實(shí)上,甚至在第一次合法使用后門(mén)之前此機(jī)密就有可能泄露。如果后門(mén)帳戶和密碼在代碼中存儲(chǔ)為字符串,則其他人很容易通過(guò)交付的二進(jìn)制文件看到已在代碼中定義的任何字符串。如果黑客在某個(gè) DLL 中看到類似“SecretAdministrativeUser”的字符串,他就會(huì)懷疑此字符串可能是進(jìn)入代碼的后門(mén)并嘗試使用它。

  最后,關(guān)于后門(mén),您不應(yīng)提供通用方法來(lái)收集服務(wù)器上的信息。雖然它通常有助于為產(chǎn)品提供支持,但在很多情況下,它會(huì)產(chǎn)生相反的結(jié)果。不要?jiǎng)?chuàng)建可以查看或下載配置文件或系統(tǒng)中源代碼的代碼。盡管創(chuàng)建這類代碼便于分析服務(wù)器上的異常情況,但是黑客也會(huì)利用它得到同樣的信息。通常,用戶名和密碼存儲(chǔ)在配置文件中,而且很多公司認(rèn)為其源代碼的知識(shí)產(chǎn)權(quán)是其最寶貴的資產(chǎn)。當(dāng)您考慮到這種能力通常也能查看服務(wù)器上其他應(yīng)用程序的文件時(shí),上述風(fēng)險(xiǎn)會(huì)更大。所以,即使 XML Web 服務(wù)代碼在這些能力面前是無(wú)懈可擊的,服務(wù)器上仍可能存在較易受到攻擊的應(yīng)用程序。

  總結(jié)  

  對(duì) Web 系統(tǒng)的攻擊確實(shí)發(fā)生過(guò),例如紅色代碼蠕蟲(chóng)病毒及其變體就是非常令人頭疼的例子。幸好,可以采取一些措施來(lái)減少 XML Web 服務(wù)的風(fēng)險(xiǎn)級(jí)別。希望我們能使您了解某些可能出現(xiàn)的弱點(diǎn)以及如何避免這些弱點(diǎn),這樣,您就可以創(chuàng)建安全的 XML Web 服務(wù)了 。

熱詞搜索:

上一篇:XML Web站點(diǎn)開(kāi)發(fā)要保證安全性(2)
下一篇:WinXP故障恢復(fù)控制臺(tái)完全指引(1)

分享到: 收藏