Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

हम हमेशा SQL कथनों में पैरामीटर का उपयोग करना क्यों पसंद करते हैं?

पैरामीटर का उपयोग करने से SQL इंजेक्शन हमलों को रोकने में मदद मिलती है जब डेटाबेस का उपयोग प्रोग्राम इंटरफ़ेस जैसे डेस्कटॉप प्रोग्राम या वेब साइट के संयोजन में किया जाता है।

आपके उदाहरण में, उपयोगकर्ता txtSalary में स्टेटमेंट तैयार करके सीधे आपके डेटाबेस पर SQL कोड चला सकता है ।

उदाहरण के लिए, अगर उन्हें 0 OR 1=1 write लिखना है , निष्पादित SQL होगा

 SELECT empSalary from employee where salary = 0 or 1=1

जिससे सभी empवेतन वापस कर दिए जाएंगे।

इसके अलावा, कोई उपयोगकर्ता आपके डेटाबेस के विरुद्ध कहीं अधिक खराब कमांड निष्पादित कर सकता है, जिसमें इसे हटाना भी शामिल है यदि उन्होंने 0; Drop Table employee :

SELECT empSalary from employee where salary = 0; Drop Table employee

टेबल employee तब हटा दिया जाएगा।

आपके मामले में, ऐसा लगता है कि आप .NET का उपयोग कर रहे हैं। पैरामीटर का उपयोग करना उतना ही आसान है:

string sql = "SELECT empSalary from employee where salary = @salary";

using (SqlConnection connection = new SqlConnection(/* connection info */))
using (SqlCommand command = new SqlCommand(sql, connection))
{
    var salaryParam = new SqlParameter("salary", SqlDbType.Money);
    salaryParam.Value = txtMoney.Text;

    command.Parameters.Add(salaryParam);
    var results = command.ExecuteReader();
}
Dim sql As String = "SELECT empSalary from employee where salary = @salary"
Using connection As New SqlConnection("connectionString")
    Using command As New SqlCommand(sql, connection)
        Dim salaryParam = New SqlParameter("salary", SqlDbType.Money)
        salaryParam.Value = txtMoney.Text

        command.Parameters.Add(salaryParam)

        Dim results = command.ExecuteReader()
    End Using
End Using

संपादित करें 2016-4-25:

जॉर्ज स्टॉकर की टिप्पणी के अनुसार, मैंने उपयोग न करने के लिए नमूना कोड बदल दिया AddWithValue . साथ ही, आमतौर पर यह अनुशंसा की जाती है कि आप IDisposable . को लपेट लें में using बयान।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर (T-SQL) में उपयोगकर्ता परिभाषित डेटा प्रकार का नाम बदलें

  2. SQL सर्वर (T-SQL) में सर्वर नाम वापस करने के 2 तरीके

  3. SQL सर्वर:केवल MAX (DATE) वाली पंक्तियों का चयन करें

  4. SQL सर्वर में अग्रणी और अनुगामी व्हॉट्सएप को कैसे निकालें - TRIM ()

  5. SQL सर्वर के sys.dm_sql_referenced_entities() का उदाहरण एक लिंक किए गए सर्वर को संदर्भित करने वाली इकाई को लौटाना