25-09-12, 05:47 AM
السلام عليكم اخواني
قبل وضع استفساري سأقوم بتعريف بسيط عن كيفيه أختراق البرنامج من خلال جمل الاستعلام ( SQL INJECTION)
حتي يستفاد من ليس لديه معرفه بهذا الموضوع المهم
مثلا لو كتبت جمله استعلام بسيطه بهذا الشكل
يمكن لمستخدم برنامجك حقن جمله الاستعلام بكل سهوله فكل ما عليه ان يكتب بدلا من الاسم
فتصبح جمله الاستعلام بعد ادخال القيمه من المستخدم بهذا الشكل
وللمزيد عن هذا الموضوع اطلع علي wikipedia
طبعا يمكن تفادي هذه المشكله اما بأستخدام الاجراءات المخزنه(Stored procedure) او استخدام البارمترات ( parameters )
الي هنا سنبدأ في النقاش فرضا انني استخدم قاعده بيانات اكسس وبالتالي سنفقد امكانيه استخدام الاجراء المخزن (Stored procedure)
لم يتبقي لي الاطريقه البارمترات ( parameters )
فرضا انني احببت الاستفاده من oop لعمل فانكشن للحذف والاضافه والتعديل يمكن استخدامها في جميع برامجي
وقمت بأنشاء كلاس وكتبت به الداله
وهكذا يمكن تنفيذ الحذف اوالاضافه اوالتعديل بكود بسيط
ولكن هنا نعود من جديد الي مشكله ( SQL INJECTION) حيث يفقد البرنامج حمايته ويمكن اختراقه
اعتذر عن الاطاله ولكن لها ضروره في هذا الموضوع المهم
ما هي الاقتراحات حتي نجمع بين oop وحمايه جمل الاستعلام من الحقن ؟؟؟
قبل وضع استفساري سأقوم بتعريف بسيط عن كيفيه أختراق البرنامج من خلال جمل الاستعلام ( SQL INJECTION)
حتي يستفاد من ليس لديه معرفه بهذا الموضوع المهم
مثلا لو كتبت جمله استعلام بسيطه بهذا الشكل
كود :
SELECT * FROM users WHERE name = ' + userName + '
كود :
a' or 't'='t
كود :
SELECT * FROM users WHERE name = 'a' OR 't'='t'
طبعا يمكن تفادي هذه المشكله اما بأستخدام الاجراءات المخزنه(Stored procedure) او استخدام البارمترات ( parameters )
الي هنا سنبدأ في النقاش فرضا انني استخدم قاعده بيانات اكسس وبالتالي سنفقد امكانيه استخدام الاجراء المخزن (Stored procedure)
لم يتبقي لي الاطريقه البارمترات ( parameters )
فرضا انني احببت الاستفاده من oop لعمل فانكشن للحذف والاضافه والتعديل يمكن استخدامها في جميع برامجي
وقمت بأنشاء كلاس وكتبت به الداله
كود :
Public Function pross(ByVal sql As String) As Boolean
cmd.Connection =cn
cmd.CommandType = CommandType.Text
cmd.CommandText = sql
connect.opendb()
Try
cmd.ExecuteNonQuery()
connect.closedb()
Return True
Catch ex As Exception
connect.closedb()
MsgBox(ex.Message)
Return False
End Try
End Function
وهكذا يمكن تنفيذ الحذف اوالاضافه اوالتعديل بكود بسيط
كود :
Dim p As New Class1
Dim sql As String
sql = String.Format("insert into tb values({0} ,'{1}' ,'{2}')", TextBox1.Text, TextBox2.Text, TextBox3.Text)
If p.pross(sql) = True Then
MsgBox("done", MsgBoxStyle.Information, "INS")
End If
ولكن هنا نعود من جديد الي مشكله ( SQL INJECTION) حيث يفقد البرنامج حمايته ويمكن اختراقه
اعتذر عن الاطاله ولكن لها ضروره في هذا الموضوع المهم
ما هي الاقتراحات حتي نجمع بين oop وحمايه جمل الاستعلام من الحقن ؟؟؟