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ệ chống lại các cuộc tấn công SQL injection mà không phải vailidate mọi phần nhập của người dùng.Làm cách nào để tạo truy vấn SQL được tham số hóa? Tại sao phải là tôi?
Bạn làm như thế nào? 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, hiểu biết của tôi đây là phi tham số:
cmdText = String.Format("SELECT foo FROM bar WHERE baz = '{0}'", fuz)
này sẽ được tham số?
cmdText = String.Format("EXEC foo_from_baz '{0}'", fuz)
Hoặc tôi có cần phải làm gì đó rộng hơn như thế này để bảo vệ bản thân mình khỏi việc tiêm SQL không?
With command
.Parameters.Count = 1
.Parameters.Item(0).ParameterName = "@baz"
.Parameters.Item(0).Value = fuz
End With
Có lợi ích nào khác khi sử dụng truy vấn được tham số hóa bên cạnh các cân nhắc 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 các câu hỏi được Grotok tham khảo. http://www.sommarskog.se/dynamic_sql.html
Tôi thấy điều đó gây sốc khiến dường như câu hỏi này chưa được hỏi trên Stackoverflow trước đây. Rất tốt! –
Ồ, nó có. Có rất nhiều từ, tất nhiên, nhưng nó có. –
Vui lòng không sử dụng khối "Có". Không bao giờ. "Với" là một trong những lý do mà rất nhiều người có một sự không thích mạnh đối với VB. – yfeldblum