說明ADO.NET安全性及重要性
本文著重介紹下ADO.NET安全性,ADO.NET安全性由三個高級步驟組成: 了解攻擊者的目的、辨別系統(tǒng)安全性和確定威脅,看完本文你肯定有不少收獲,希望本文能教會你更多東西。
編寫安全 ADO.NET 應(yīng)用程序不僅僅是避免常見的編碼缺陷(如不驗(yàn)證用戶輸入)。訪問數(shù)據(jù)的應(yīng)用程序具有許多潛在的故障點(diǎn),攻擊者可以利用這些故障點(diǎn)來檢索、操作或損壞敏感數(shù)據(jù)。因此,了解安全性的各個方面(從應(yīng)用程序設(shè)計階段期間的威脅建模過程到應(yīng)用程序的最終部署和不斷的維護(hù))非常重要。
.NET Framework 提供了很多有用的類、服務(wù)和工具,以用于保證數(shù)據(jù)庫應(yīng)用程序的安全和對其進(jìn)行管理。公共語言運(yùn)行庫 (CLR) 提供了供代碼在其中運(yùn)行的類型安全環(huán)境,以及用于進(jìn)一步限制托管代碼權(quán)限的代碼訪問安全性 (CAS)。遵循安全數(shù)據(jù)訪問編碼慣例可降低由潛在攻擊者造成的損壞。
編寫安全代碼不會阻止在使用非托管資源(如數(shù)據(jù)庫)時自己造成的安全漏洞。多數(shù)服務(wù)器數(shù)據(jù)庫(如 SQL Server)擁有其各自的安全系統(tǒng),正確實(shí)現(xiàn)這些安全系統(tǒng)可增強(qiáng)安全性。但是,即使是具有可靠安全系統(tǒng)的數(shù)據(jù)源,如果未適當(dāng)配置,也可能受到攻擊。#t#
保護(hù)應(yīng)用程序的安全是一個持續(xù)的過程。 因?yàn)椴豢赡茴A(yù)知將來會出現(xiàn)哪種新的攻擊技術(shù),所以開發(fā)人員永遠(yuǎn)都不能保證某一應(yīng)用程序可以免受所有的攻擊。 僅因?yàn)檫€沒有人發(fā)現(xiàn)(或發(fā)布)系統(tǒng)中的安全性缺陷,也不意味著不存在或可能不存在安全性缺陷。 在項(xiàng)目的設(shè)計階段,您需要對安全性進(jìn)行規(guī)劃,并規(guī)劃如何在應(yīng)用程序生存期內(nèi)維護(hù)其安全。
在開發(fā)安全應(yīng)用程序時遇到的最大問題之一是安全通常是事后的補(bǔ)救辦法,即在項(xiàng)目的代碼完成后才想起需要實(shí)現(xiàn)某些內(nèi)容。 因?yàn)槲纯紤]如何維護(hù)應(yīng)用程序的安全,所以在開始階段未注重應(yīng)用程序安全性將導(dǎo)致所開發(fā)的應(yīng)用程序不安全。
到最后關(guān)頭再實(shí)現(xiàn)安全性將導(dǎo)致更多 Bug,因?yàn)檐浖o法承受新的制約,或必須重寫才能容納未預(yù)想到的功能。 每行修訂的代碼都可能引入新 Bug。 因此,您在開發(fā)過程的初始階段就應(yīng)考慮安全性,使得安全性可與新功能的開發(fā)同步進(jìn)行。
您只有了解系統(tǒng)可能會受到的所有攻擊,才能使系統(tǒng)免受這些攻擊。 評估安全威脅的過程稱為“威脅建?!?,該過程是確定 ADO.NET 應(yīng)用程序中違反安全性的可能性及后果所必要的。
威脅建模是一種迭代方法,用于評估應(yīng)用程序中的漏洞,以找到可公開敏感數(shù)據(jù)的最危險的漏洞。 一旦確定了漏洞,您就可以按安全性對其進(jìn)行排列,并創(chuàng)建一組按優(yōu)先順序排列的措施以應(yīng)對威脅。