1
A
回答
1
我相信你使用sqlparameters避免此問題。
5
ADO.NET中最簡單的工具是使用SQL參數來查看所有可變的查詢值。這也具有效率優勢。即使您的代碼中包含明確的sql,但完全沒有使用存儲過程或函數,您仍然可以通過使用相同的查詢字符串,同時僅改變參數的值而獲得這些優點。
當你真的需要動態地構建你的sql命令文本而不能使用sql參數時,可能會有時間(例如搜索引擎)。這很不幸,因爲保護自己免受sql注入(其他各種消毒和關鍵字黑名單)的其他方式更爲複雜,並且需要您體貼周到,聰明。儘量避免這種情況!
1
這是一個「ADO.NET」問題嗎?如果是的話,那麼SQLParameters就是你的朋友。 Scott Gu關於這個問題的文章很陳舊,但仍然非常有用,並且有很好的建議。
如果你不使用ADO.NET那麼大多數奧姆斯會防止你的攻擊。例如,LLBLGen生成參數化查詢。像Linq to SQL一樣。我猜他們都這樣做,雖然檢查你的味道ORM :)
0
對我來說,最簡單的方法是使用Linq2Sql來查詢數據庫。這篇文章沒有提到,因爲它不存在。你也可以使用實體框架。它提供了更高的功率和更高的學習曲線。還有很多其他的ORM,大多數(可能都是,但我不知道)會防止SQL注入。另一件好事是ORM負責從結果中創建一個對象。
相關問題
- 1. SQL Server 2008和.NET Framework 4
- 2. 依賴注入和.NET
- 3. Doctrine和SQL注入
- 4. LINQ和SQL注入
- 5. Hibernate和SQL注入
- 6. SqlCeResultSet和SQL注入
- 7. EntitySQL和SQL注入
- 8. SQL注入和Codeigniter
- 9. ORM和SQL注入
- 10. Linq到SQL和SQL注入
- 11. 數據集和SQL Server CE .NET 4的
- 12. Erlang和SQL注入攻擊
- 13. ScriptResource.axd和.Net 4
- 14. Oracle數據庫和.NET(C#) - 如何防止SQL注入
- 15. SQL注入與EFCTP和.net mvc的可能性
- 16. SQL注入攻擊和django
- 17. Like子句和sql注入
- 18. Gnome的libgda和SQL注入
- 19. Doctrine2 FindOneBy和SQL注入
- 20. SqlDataSource控件和SQL注入
- 21. SQL注入和Postgres「CREATE SCHEMA」
- 22. LINQ to Entities和SQL注入
- 23. 參數和SQL注入asp.net
- 24. Linq到sql和sql注入攻擊
- 25. 依賴注入和.NET屬性
- 26. MySQL的「插入」和SQL注入
- 27. Sql注入查詢
- 28. .NET MVC 4註冊後自動登錄
- 29. SQL注入指示和解決方案
- 30. SQL注入
即使動態構建查詢,我也能夠使用參數。這很值得。 – 2010-10-08 14:13:53
關於效率的好處 – 2010-10-08 14:15:15