Notice: _load_textdomain_just_in_time تمّ استدعائه بشكل غير صحيح. Translation loading for the newsblogger domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. من فضلك اطلع على تنقيح الأخطاء في ووردبريس لمزيد من المعلومات. (هذه الرسالة تمّت إضافتها في النسخة 6.7.0.) in /home/alkrsan/public_html/wp-includes/functions.php on line 6114

Notice: _load_textdomain_just_in_time تمّ استدعائه بشكل غير صحيح. Translation loading for the newscrunch domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. من فضلك اطلع على تنقيح الأخطاء في ووردبريس لمزيد من المعلومات. (هذه الرسالة تمّت إضافتها في النسخة 6.7.0.) in /home/alkrsan/public_html/wp-includes/functions.php on line 6114

خطأ فى قاعدة بيانات ووردبريس: [Table 'alkrsan_d01r4.wkp_wf_sn_cf_bl_ips' doesn't exist]
SELECT tid FROM `wkp_wf_sn_cf_bl_ips` WHERE ip = '18.97.14.82'

خطأ فى قاعدة بيانات ووردبريس: [Table 'alkrsan_d01r4.wkp_wf_sn_cf_vl' doesn't exist]
SHOW FULL COLUMNS FROM `wkp_wf_sn_cf_vl`

تخطي مشاكل حقن قواعد البيانات الجزء الثاني . – شبكة القرصان

تخطي مشاكل حقن قواعد البيانات الجزء الثاني .

شاهدنا سوياً في الجزء الاول من الموضوع تخطي مشاكل حقن قواعد البيانات – القسم الأول ماهي sql injection   وكيف نستطيع تحويل مسار أو هدف الاستعلام الاصلي في البرنامج الى استعلام يخدمنا بدون تردد .

سيتم التطبيق في هذا الجزء على صندوق تعليقات في موقع اخباري كالذي نراه في الكثير من المواقع .

اللغه والتقنية المستخدمه في التطبيق هي asp.net – vb.net . وقاعدة بيانات sql server (“يمكنك التطبيق على اي مزود قواعد بيانات أردت”)

قد نجد من يقول ان تطبيقات الويب المبنيه بتقنية asp.net  تحمي نفسها , هذا غير صحيح فأي تطبيق يتعامع مع قواعد البيانات سواء كان تطبيق ويب او ويندوز أو اي شيئ مرتبط بقاعدة بيانات يمكن حقنه ان لم يكن محمي(“أفترض انك مبرمج حقيقي لايستخدم المعالج في asp.net :”) , فمثلاً شركات الهاتف المحمول في السابق كان يمكن حقنها بواسطه رسائل sms

لحمايه قاعدة البيانات لابد وأن تصل القيم المدخله من قبل المستخدم كما هي بحذافيرها الى الحقل المحدد في الجدول , أي لايمكن لعبارات sql التي قد يدخلها المستخدم ان تؤثر على جمله slq الاصلية , وبشكل اوضح حشرها في الحقل المحدد مهما كان محتواها .

لنشاهد المثال .

-22

صندوق للتعليقات في موقع اخباري

لنشاهد شفرة التعامع مع قاعدة البيانات الخاصه بالمثال

2-1

 

لسنا في درس برمجي لكن سنشرح الكود سطراً سطرا

7- في حدث البيج لود أو فتح الصفحه قراءة الخبر

8- تأكدنا من وجود بارامتر يحمل قيمة المفتاح الاساسي في جدول الاخبار.

9-تاكدنا من وجود بارامتر اسمه name اي ان الصفحه تحمل بارامترات تعليق  (استخدمنا هذه الطريقه لان فورم الاخبار html وليس asp … )

10- تعريف كائن  جديد من نوع sqlcommand  لاجل التخاطب مع قاعدة البيانات .

11- استندنا للكائن عبارة الاتصال الموجوده في كلاس منفصل .

12-نوع الكائن أو طريقه عمله , يمكن هنا الاعتماد على برمجة قواعد البيانات ببناء بروسيجر يقوم بالعمليه لكننا هنا استخدمنا عبارة sqlstring اي اننا كتبنا العبارة في داخل برنامجنا وليس في قاعدة البيانات .

13,14,15 – قمنا بالتأكد من الاتصال اذا كان مغلق افتحه .

16,17,18 – تعريف متغير نصي واسندنا له sql

19- اسندنا للكائن عبارة sql التي ستذهب الى قاعدة البيانات , لاحظ اننا لم ندرج القيم مباشرة في عبارة sql بل بدلناها بكلمات مسبوقه بعلامة @  أي بارامترات , وهذه البارامترات هي لب الموضوع أي ان مزود قاعدة البيانات سيأخذ هذه البارامترات ويدرجها في الخلايا المحدده مهما كان محتواها .

20,21,22,23 – اخبرنا مزود قاعدة البيانات بأن بقيم البارامترات الموجوده في عبارة sql

24- نفذنا العبارة على قاعدة البيانات .

25,26,27 تأكد اذا كان الاتصال مفتوح اغلقه.

28 إعادة تحميل الصفحه .

 ———————————————————

الان لنجرب الكود ونضع هذه الجمله في حقل التعليق .

‘) update tblcomand set fldname=’123456789’- –

هذه الجمله إن لم يوجد حمايه لقاعدة البيانات ستقوم بتحويل جميع البيانات الموجوده في حقل الاسم في الجدول الى 123456789.

من خلال خادم  مراقبه قاعدة البيانات

3

نلاحظ ان جمله sql وصلت كما يلي الى السيرفر

(الصورة التاليه للكود الذي قام السيرفر بأنشائه ليتعامع مع البارامترات)

4

وأدرجت في الحقل كما هي بحذافيرها

 

 5

إلى هنا نكون قد انتهينا .

اذا فهمت الموضوع جيداً يمكنك البحث عن PROCEDURE, وكيفية استخدامه

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

إرسال التعليق