利用 ASP.NET 的內(nèi)置功能抵御Web攻擊
利用 ASP.NET 的內(nèi)置功能抵御Web攻擊
一、ASP.NET 開發(fā)人員應(yīng)當(dāng)始終堅持的做法
如果您正在閱讀本文,可能不需要再向您灌輸 Web 應(yīng)用程序中的性愈來愈重要這一事實了。您需要的可能是一些有關(guān)如何在 ASP.NET 應(yīng)用程序中實現(xiàn)性的實際建議。壞消息是,沒有任何開發(fā)平臺 — 包括 ASP.NET在內(nèi) — 能夠保證一旦采用了該平臺,您能夠編寫百分百的代碼。誰要是這么說,一準(zhǔn)在撒謊。好消息是, ASP.NET 來說,ASP.NET,特別是版本 1.1 和即將發(fā)行的版本 2.0,集成了一些便于使用的內(nèi)置防御屏障。
光是應(yīng)用所有這些功能并不足以保護(hù) Web 應(yīng)用程序,使其免受任何可能和可預(yù)見的攻擊。但是,如果與其他防御技巧和策略相結(jié)合,內(nèi)置的 ASP.NET 功能將可以構(gòu)成一個強大的工具包,有助于確保應(yīng)用程序在的環(huán)境中運行。
Web 性是各種因素的總和,是一種范圍遠(yuǎn)超單個應(yīng)用程序的策略的結(jié)果,這種策略涉及數(shù)據(jù)庫管理、網(wǎng)路配置,以及社會工程和 phishing。
本文的目的在于說明 ASP.NET 開發(fā)人員為了將標(biāo)準(zhǔn)保持到合理的高度,所應(yīng)始終堅持的做法。這也是性最主要的內(nèi)容:保持警惕,永不完全放松,讓壞人越來越難以發(fā)起黑客攻擊。
下面我們來看看 ASP.NET 提供了哪些可以簡化這項工作的功能。
二、威脅的來源
在表 1 中,我匯總了最常見的 Web 攻擊類型,以及應(yīng)用程序中可能導(dǎo)致這些攻擊得手的缺陷。
表 1. 常見的 Web 攻擊
列表中顯現(xiàn)出來的關(guān)鍵性事實有哪些?在我看來,起碼有以下三點:
1.無論您何時將何種用戶輸入插入瀏覽器的標(biāo)記中,您都潛在地將自己暴露在了代碼注入攻擊(任何 SQL 注入和 XSS 變種)之下。
2. 必須以的方式實現(xiàn)數(shù)據(jù)庫訪問,是說,應(yīng)當(dāng)為數(shù)據(jù)庫使用盡可能少的權(quán)限,并通過角色來劃分各個用戶的職責(zé)。
3.永遠(yuǎn)都不通過網(wǎng)絡(luò)發(fā)送敏感數(shù)據(jù)(更別說是明文了),并且必須以的方式將敏感數(shù)據(jù)存儲在服務(wù)器上。
有意思的是,上面的三點分別針對的是 Web 性的三個不同方面,而這三個方面結(jié)合起來,才是的一種生成防攻擊、防篡改應(yīng)用程序的合理方式。Web 性的各個層面可以總結(jié)如下:
1.編碼實踐:數(shù)據(jù)驗證、類型和緩沖區(qū)長度檢查,防篡改措施
2.數(shù)據(jù)訪問策略:使用決策來保護(hù)可能最弱的帳戶,使用存儲過程或者至少是參數(shù)化的命令。
3.有效的存儲和管理:不將關(guān)鍵性數(shù)據(jù)發(fā)送到客戶端,使用哈希代碼來檢測操作,對用戶進(jìn)行身份驗證并保護(hù)標(biāo)識,應(yīng)用嚴(yán)格的密碼策略
如您所看到的,只有可以通過開發(fā)人員、架構(gòu)師和管理員的共同努力,才可以產(chǎn)生的應(yīng)用程序。請不要假定您能夠以其他方式達(dá)到同樣目的