2010-10-08 78 views
1

.NET 4中是否有工具可以根據SQL注入來「自動化」SQL域的驗證?SQL注入和.NET 4

我看到this文章,但恐怕會不日期...

編輯:
甲骨文 Db的兼容...

回答

1

我相信你使用sqlparameters避免此問題。

5

ADO.NET中最簡單的工具是使用SQL參數來查看所有可變的查詢值。這也具有效率優勢。即使您的代碼中包含明確的sql,但完全沒有使用存儲過程或函數,您仍然可以通過使用相同的查詢字符串,同時僅改變參數的值而獲得這些優點。

當你真的需要動態地構建你的sql命令文本而不能使用sql參數時,可能會有時間(例如搜索引擎)。這很不幸,因爲保護自己免受sql注入(其他各種消毒和關鍵字黑名單)的其他方式更爲複雜,並且需要您體貼周到,聰明。儘量避免這種情況!

+0

即使動態構建查詢,我也能夠使用參數。這很值得。 – 2010-10-08 14:13:53

+0

關於效率的好處 – 2010-10-08 14:15:15

1

這是一個「ADO.NET」問題嗎?如果是的話,那麼SQLParameters就是你的朋友。 Scott Gu關於這個問題的文章很陳舊,但仍然非常有用,並且有很好的建議。

http://weblogs.asp.net/scottgu/archive/2006/09/30/Tip_2F00_Trick_3A00_-Guard-Against-SQL-Injection-Attacks.aspx

如果你不使用ADO.NET那麼大多數奧姆斯會防止你的攻擊。例如,LLBLGen生成參數化查詢。像Linq to SQL一樣。我猜他們都這樣做,雖然檢查你的味道ORM :)

0

對我來說,最簡單的方法是使用Linq2Sql來查詢數據庫。這篇文章沒有提到,因爲它不存在。你也可以使用實體框架。它提供了更高的功率和更高的學習曲線。還有很多其他的ORM,大多數(可能都是,但我不知道)會防止SQL注入。另一件好事是ORM負責從結果中創建一個對象。