ฉันได้ยินมาว่า "ทุกคน" กำลังใช้การสืบค้น SQL ที่กำหนดพารามิเตอร์เพื่อป้องกันการโจมตีด้วยการแทรก SQL โดยไม่จำเป็นต้องยกเลิกการป้อนข้อมูลของผู้ใช้ทุกชิ้น
คุณจะทำอย่างไร? คุณได้รับสิ่งนี้โดยอัตโนมัติเมื่อใช้กระบวนงานที่จัดเก็บไว้หรือไม่?
ดังนั้นความเข้าใจของฉันจึงไม่ถูกกำหนดพารามิเตอร์:
cmdText = String.Format("SELECT foo FROM bar WHERE baz = '{0}'", fuz)
สิ่งนี้จะถูกกำหนดพารามิเตอร์หรือไม่
cmdText = String.Format("EXEC foo_from_baz '{0}'", fuz)
หรือฉันต้องทำอะไรให้กว้างขวางกว่านี้เพื่อป้องกันตัวเองจากการฉีด SQL?
With command
.Parameters.Count = 1
.Parameters.Item(0).ParameterName = "@baz"
.Parameters.Item(0).Value = fuz
End With
มีข้อดีอื่น ๆ ในการใช้แบบสอบถามแบบกำหนดพารามิเตอร์นอกเหนือจากข้อพิจารณาด้านความปลอดภัยหรือไม่?
อัปเดต: บทความที่ยอดเยี่ยมนี้เชื่อมโยงกับหนึ่งในคำถามที่อ้างอิงโดย Grotok http://www.sommarskog.se/dynamic_sql.html