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