ডেস্কটপ প্রোগ্রাম বা ওয়েব সাইটের মতো কোনও প্রোগ্রাম ইন্টারফেসের সাথে ডেটাবেস ব্যবহার করা হলে প্যারামিটারগুলি ব্যবহার করে এসকিউএল ইনজেকশন আক্রমণগুলিকে রোধ করতে সহায়তা করে ।
আপনার উদাহরণে, কোনও ব্যবহারকারী সরাসরি বিবরণী তৈরি করে আপনার ডাটাবেজে এসকিউএল কোড চালাতে পারে txtSalary
।
উদাহরণস্বরূপ, তারা লিখতে থাকলে 0 OR 1=1
, কার্যকর করা এসকিউএল হবে
SELECT empSalary from employee where salary = 0 or 1=1
এর মাধ্যমে সমস্ত এমপ্লেসগুলি ফেরত দেওয়া হবে।
তদ্ব্যতীত, কোনও ব্যবহারকারী আপনার ডাটাবেসের বিরুদ্ধে এটি মুছে ফেলা সহ আরও খারাপ কমান্ড সম্পাদন করতে পারে যদি তারা লিখে থাকে 0; Drop Table employee
:
SELECT empSalary from employee where salary = 0; Drop Table employee
টেবিলটি employee
তখন মুছে ফেলা হবে।
আপনার ক্ষেত্রে, দেখে মনে হচ্ছে আপনি নেট ব্যবহার করছেন। পরামিতি ব্যবহার করা যেমন সহজ:
সি শার্প
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();
}
VB.NET
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
বিবৃতিতে রেকর্ড করার পরামর্শ দেওয়া হয় ।