是否sqlCommand.Parameters.Add(sqlParam)檢查保留字如'Table','Drop'等 基本上我想通過使用上面的方法知道我們如何避免Sql注入什麼是機制在那裏。Parameters.Add和Sql注入
0
A
回答
2
這一切都取決於你計劃在您正在執行的SQL參數做什麼。關於使用.Parameters.Add()的好處是,這些值是單獨傳遞的,而不是大塊chunk-o-sql的一部分。當然,這取決於你決定如何處理它們。
假設你做這樣的事情:
SELECT * FROM myTable WHERE customer_nr = @customer_nr
然後,它並沒有真正即使在「黑客」通過沿';DROP TABLE myTable --
線的東西沒關係。因爲沒有客戶被命名爲`查詢根本不會返回任何「; DROP TABLE mytable的 - 」
但是,如果你要使用它像這樣:
SELECT @sql = 'SELECT * FROM myTable WHERE customer_nr = ''' + @customer_nr + ''''
EXEC (@sql)
那麼你打敗目的的系統和黑客將能夠做一些SQL-Injection-ISH的東西。
0
不,它不會將參數視爲保留字。使用參數化存儲過程是避免sql注入的最好方法。
+0
感謝您的回覆,請提供給我在那裏指出佔位符不會幫助防止SQL注入參考 – aads
+0
哦......我相信我能拿出一個參數化存儲過程,很容易受到SQL注入攻擊。 :) –
相關問題
- 1. Parameters.Add在SQL項目C#
- 2. 差異與Parameters.Add和Parameters.AddWithValue
- 3. Dapper和SQL注入
- 4. Doctrine和SQL注入
- 5. SQL注入和Codeigniter
- 6. LINQ和SQL注入
- 7. PHP和SQL注入
- 8. Hibernate和SQL注入
- 9. mysql_num_rows和SQL注入
- 10. EntitySQL和SQL注入
- 11. SqlCeResultSet和SQL注入
- 12. ORM和SQL注入
- 13. Linq到SQL和SQL注入
- 14. parse_str和ajax和sql注入
- 15. SQL注入和Postgres「CREATE SCHEMA」
- 16. SQL注入和.NET 4
- 17. Doctrine2 FindOneBy和SQL注入
- 18. LINQ to Entities和SQL注入
- 19. Like子句和sql注入
- 20. doctrine 2 orm和sql注入
- 21. Gnome的libgda和SQL注入
- 22. SQL注入和LIKE語句
- 23. SqlDataSource控件和SQL注入
- 24. SQL注入,行情和PHP
- 25. SQL注入攻擊和django
- 26. Erlang和SQL注入攻擊
- 27. Django和SQL注入示例
- 28. PHP SQL注入和保護?
- 29. CFWheels ORM和SQL注入
- 30. 內容值和SQL注入
你真的應該閱讀相關文章[關於Bobby Tables](http://stackoverflow.com/questions/332365/how-does-the-sql-injection-from-the-bobby-tables-xkcd-comic-工作?rq = 1),它解釋得更好,並引用了很多其他相關信息。 – deroby
所以這意味着.Parameters.Add()將避免SQL注入,我們不想去總是解決它的Sps? – aads
Parameters.Add()確實可以幫助您避免SQL注入。無論你直接在.CommandText中執行實際的SQL命令,還是通過存儲過程執行實際上並不重要(儘管我更喜歡存儲過程!)。簡單地說,不要陷入將參數轉換回動態SQL的陷阱,無論是在.CommandText還是在存儲過程中,就像我上面所說的那樣。 – deroby