Tôi đã nghe nói rằng "mọi người" đang sử dụng các truy vấn SQL được tham số hóa để bảo vệ khỏi các cuộc tấn công SQL injection mà không cần phải vailidate mọi thông tin đầu vào của người dùng.
Làm thế nào để bạn làm điều này? Bạn có tự động nhận được điều này khi sử dụng các thủ tục được lưu trữ không?
Vì vậy, sự hiểu biết của tôi đây là điều không tham số:
cmdText = String.Format("SELECT foo FROM bar WHERE baz = '{0}'", fuz)
Điều này sẽ được tham số hóa?
cmdText = String.Format("EXEC foo_from_baz '{0}'", fuz)
Hay tôi cần thực hiện một số việc mở rộng hơn như thế này để tự bảo vệ mình khỏi SQL injection?
With command
.Parameters.Count = 1
.Parameters.Item(0).ParameterName = "@baz"
.Parameters.Item(0).Value = fuz
End With
Có những lợi ích nào khác khi sử dụng truy vấn được tham số hóa ngoài những cân nhắc về bảo mật không?
Cập nhật: Bài viết tuyệt vời này được liên kết trong một trong những tài liệu tham khảo câu hỏi của Grotok. http://www.sommarskog.se/dynamic_sql.html