السبت، 26 يونيو 2010

حقنة الـ sql


هي واحدة من المخاطر الشهيرة في تطبيقات قواعد البيانات، سواء كانت تطبيقات النوافذ أو تطبيقات الويب، حيث يقوم المهاجمون بوضع مدخلات في نماذج الإدخال، تتحول هذه المدخلات فيما بعد إلى أوامر ضارة بقاعدة البيانات الخاصة بالبرنامج، وسبب هذه المشكلة هي عدم إنتباه المبرمج/المطور (بأي لغة تقبل تضمين عبارات sql)، لما يمكن أن يفعله المهاجم، نوضح ذلك في لغة الفيجول بيسك مع الـ ado.net، بمثال:


Dim strcheck As String = "select *from tblteacher where tchr_pswd='" & txt_userpass.Text & "' and teachername='" & txt_userid.Text & "'"
con.Open()
Dim cmd2 As New OleDbCommand(strcheck, con)
Dim x As String
x = cmd2.ExecuteScalar()
con.Close()
If x Then
MsgBox("كلمة السر صحيحة
…………………….
………………..
والآن تخيل لو أن المهاجم فتح هذا البرنامج وأدخل في إحدى صناديق النص الجملة التالية:
a' or 't'='t
فإن الذي سيحدث هو كسر كلمة المرور والدخول إلى البرنامج.
وهناك بالطبع طرق كثيرة لتنفيذ هذه الحقنة، كما أن هناك طرق كثيرة جدا للتعامل معها، نشير هنا إلى أن النمط المنفصل أكثر أمنا في هذه الحالة من النمط المتصل، كما نشير إلى استخدام الباراميترات في أخذ تلك القيم، وطرق كثيرة يمكن أن نتطرق لها لاحقا.
بقي أن نشير إلى أن حقنة الـ sql، يمكن أن تحدث مع أي لغة برمجة أخرى تستخدم الـ sql: مثل الـ c#,java,php…etc.

هناك تعليق واحد:

  1. أرجو ممن يمر أن يفيدنا بأي إضافة لهذا الموضوع، مع الشكر المسبق له.

    ردحذف