回答

6

否。阻止SQL注入攻擊的策略是類似的(參數化查詢而不是動態構建,存儲過程,檢查惡意值的參數等)。

是的,因爲你沒有用EF或Linq To Sql編寫任何SQL代碼,所以你可以考慮額外的一層保護。

+0

直接從MSDN:「LINQ to SQL將您編寫的查詢轉換爲參數化SQL查詢(以文本形式)並將它們發送到SQL服務器進行處理。「如果你沒有使用參數化查詢,這只是一個額外的保護層,完全有可能在不使用Linq的情況下編寫參數化查詢 – Brian 2010-10-21 13:23:17

+0

@Brian - 我從來沒有說過你不能在沒有LINQ的情況下編寫參數化查詢。在我的第一條語句中說完全相反,LINQ to SQL只是爲你生成它們(因爲有很多開發者仍然沒有自己編寫參數化查詢)。 – 2010-10-21 13:26:47

-1

如果您在SQL Server中使用存儲過程,則更難以產生sql注入錯誤。

+0

-1,這是不準確的,存儲過程,如果你建立存儲過程中的動態SQL本身不提供保護。唯一真正的預防是參數化查詢。這通常隱含地包含存儲過程,因爲大多數情況下通常不會在其中執行動態sql,而是陳述使用的存儲過程是誤導性的,並且掩蓋了爲什麼它們可能會抵制sql注入。 – 2010-10-21 12:55:38

1

爲保護系統免遭sql注入,您可以採取的大部分工作都在數據庫之外,因此沒有足夠的理由來更改數據庫引擎。

您可能想看看來自Microsoft的WPL庫。

在Microsoft Web防護庫(WPL)是一套.NET程序集,這將有助於保護您的網站,現在,未來和過去的。在WPL包括

AntiXSS
AntiXSS提供的編碼功能對用戶的輸入,包括HTML,HTML屬性,XML,CSS和JavaScript萬千。

  • 白名單:AntiXSS與標準的.NET框架編碼不同,使用白名單方法。所有不在白名單中的字符將使用正確的編碼類型規則進行編碼。雖然這是以性能爲代價的,但AntiXSS已經在考慮性能的情況下編寫。
  • 安全全球化:網絡是一個全球性的市場,而跨網站腳本是一個全球性問題。攻擊可以在任何地方進行編碼,Anti-XSS現在可以防止以數十種語言編碼的XSS攻擊。

安全運行時引擎
安全運行時引擎(SRE)提供了在你現有網站的包裝,以確保普通的攻擊媒介不是讓你的應用程序。保護作爲標準配置提供的

  • 跨站點腳本
  • SQL注入