創(chuàng)建ADO.NET連接相關(guān)使用
對于ADO.NET連接相關(guān)措施,這些攻擊來自使用運行此代碼的用戶的權(quán)限執(zhí)行的惡意代碼, 其他攻擊可能源自被攻擊者利用的善意代碼。 在規(guī)劃安全性時,始終假設(shè)將出現(xiàn)最糟糕的情況。
您可以使用的一種措施是:嘗試使用最小特權(quán)來運行代碼,在代碼周圍樹立盡可能多的障礙。 最小特權(quán)原則指出,ADO.NET連接應(yīng)在完成工作所需的最短時間內(nèi)向所需的最少代碼授予任何給定的特權(quán)。
ADO.NET連接創(chuàng)建安全應(yīng)用程序的最好方法是在開始階段不授予任何權(quán)限,然后對執(zhí)行的特定任務(wù)添加最有限的權(quán)限。 相反,ADO.NET連接如果開始具有所有權(quán)限而以后拒絕個別權(quán)限,就會導(dǎo)致難以測試和維護的不安全應(yīng)用程序,因為無意中授予過多的權(quán)限會造成完全漏洞。#t#
連接到 Microsoft SQL Server 后,您便可以使用 Windows 身份驗證(也稱為集成安全),ADO.NET連接使用當前活動 Windows 用戶的標識,而不是傳遞用戶 ID 和密碼。由于不會在連接字符串中公開用戶憑據(jù),因此強烈建議使用 Windows 身份驗證。如果無法使用 Windows 身份驗證連接到 SQL Server,請考慮使用 SqlConnectionStringBuilder 在運行時創(chuàng)建連接字符串。
用于身份驗證的憑據(jù)需要根據(jù)應(yīng)用程序的類型進行不同地處理。例如,ADO.NET連接在 Windows 窗體應(yīng)用程序中,可以提示用戶提供身份驗證信息,也可以使用用戶的 Windows 憑據(jù)。但是,Web 應(yīng)用程序通常使用應(yīng)用程序自身提供的憑據(jù)來訪問數(shù)據(jù),而不是使用用戶提供的憑據(jù)。
(而不是作為 Transact-SQL 語句的一部分)進行傳遞,參數(shù)化命令可抵御 SQL 注入攻擊。這樣,便不會在數(shù)據(jù)源中執(zhí)行插入到值中的 Transact-SQL 命令。相反,只會將這些命令作為參數(shù)值來計算。除具備安全優(yōu)勢外,參數(shù)化命令還提供一種便捷方法,使用該方法可組織隨 Transact-SQL 語句傳遞或傳遞到存儲過程的值。#t#
當具有最少的安全要求或沒有安全要求時,Microsoft Access 和 Microsoft Excel 可充當 ADO.NET連接應(yīng)用程序的數(shù)據(jù)存儲區(qū)。其安全功能作為一種阻止手段固然有效,但其作用僅限于阻止不了解情況的用戶亂摸亂動而已。Access 和 Excel 的物理數(shù)據(jù)文件位于文件系統(tǒng)上,并且注定可供所有用戶訪問。
這使得這些文件易受到攻擊,從而導(dǎo)致文件失竊或數(shù)據(jù)丟失,ADO.NET連接因為他人可輕松復(fù)制或更改這些文件。如果需要強有力的安全措施,請使用 SQL Server 或其他基于服務(wù)器的數(shù)據(jù)庫,這樣便無法從文件系統(tǒng)讀取物理數(shù)據(jù)文件。