मैंने सुना है कि "हर कोई" उपयोगकर्ता इनपुट के हर टुकड़े को मिटाए बिना SQL इंजेक्शन के हमलों से बचाने के लिए पैरामीटर किए गए SQL प्रश्नों का उपयोग कर रहा है।
आप यह कैसे करते हैं? संग्रहीत प्रक्रियाओं का उपयोग करते समय क्या आप इसे स्वचालित रूप से प्राप्त करते हैं?
तो मेरी समझ में यह गैर-मानकीकृत है:
cmdText = String.Format("SELECT foo FROM bar WHERE baz = '{0}'", fuz)
क्या यह पैरामीटर किया जाएगा?
cmdText = String.Format("EXEC foo_from_baz '{0}'", fuz)
या क्या मुझे एसक्यूएल इंजेक्शन से खुद को बचाने के लिए इस तरह से अधिक व्यापक करने की आवश्यकता है?
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