खोज…


परिचय

Parameterized क्वेरीज़ का उपयोग SQL इंजेक्शन हमलों से बचाव के लिए किया जा सकता है।

कमजोर करने योग्य दृष्टिकोण: प्रपत्र संदर्भों के साथ संबंधित SQL स्ट्रिंग

यह SQL एक्शन क्वेश्चंस बनाने वाले नौसिखिए डेवलपर्स के लिए विशिष्ट दृष्टिकोण है। वे बॉबी टेबल टाइप एसक्यूएल इंजेक्शन हमलों के लिए कमजोर हैं।

Dim strSQL As String

strSQL = "INSERT INTO Employees chrFirstName, chrLastName, chrPhone " _
         & "VALUES ('" & Me!txtFirstName & "','" & Me!txtLastName & "','" & Me!txtPhone & "');"

CurrentDb.Execute strSQL

QueryDef Parameterized क्वेरी दृष्टिकोण

यह दृष्टिकोण एक उपयोगकर्ता को निष्पादन के लिए उनके इनपुट में एक दूसरे SQL कथन को एम्बेड करने से रोकेगा।

Dim strSQL As String
Dim db As DAO.Database
Dim qdf As DAO.QueryDef

strSQL = "PARAMETERS [FirstName] Text(255), [LastName] Text(255), [Phone] Text(255); " _
         & "INSERT INTO Employees (chrFirstName, chrLastName, chrPhone) " _
         & "VALUES ([FirstName], [LastName], [Phone]);"

Set db = CurrentDb

Set qdf = db.CreateQueryDef("", strSQL)
qdf.Parameters("FirstName") = Me!txtFirstName
qdf.Parameters("LastName") = Me!txtLastName
qdf.Parameters("Phone") = Me!txtPhone
qdf.Execute

Me!txtFirstName = vbNullString
Me!txtLastName = vbNullString
Me!txtPhone = vbNullString

qdf.Close
db.Close
Set qdf = Nothing
Set db = Nothing

मान्य पैरामीटर प्रकार:

  • DATETIME : दिनांक के लिए (पैरामीटर VBA Date अपेक्षा करता है)
  • SHORT , LONG : पूर्णांक के लिए ( SHORT पूर्णांक की अपेक्षा करता है, LONG उम्मीद है)
  • SINGLE , DOUBLE : फ़्लोटिंग पॉइंट के लिए (क्रमशः सिंगल और डबल की उम्मीद करें)
  • VARCHAR या TEXT : तार के लिए
  • MEMO या LONGTEXT : 255 से अधिक वर्णों के लिए तार


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow