[ كود برمجي ] الحماية البرمجية الصارمة في PHP: إزاي تقفل ثغرات SQL Injection و XSS و CSRF زي المحترفين؟

Devil Coder

عضو جديد
16 يناير 2023
4
0
46
Palestine
تحياتي لكل المطورين والمهتمين بالأمن البرمجي في نقطة التطوير

في عالم البرمجة، القاعدة الأولى والذهبية بتقول: الكود الشغال مش معناه أبداً إنه كود آمن!
كتير من المبرمجين بيكتبوا سكريبتات بتأدي الغرض تماماً، لكن مجرد فحص بسيط بيكشف ثغرات كارثية تخلي أي طفل هاكر يسحب قاعدة البيانات بالكامل أو يسرق جلسات الأدمن في ثواني.

في الموضوع ده، هنقفل مع بعض أشهر 3 ثغرات أمنية في تطبيقات الـ PHP بطريقة عملية 100%.

1. إعدام ثغرة SQL Injection نهائياً بـ PDO Prepared Statements
دمج المتغيرات المباشرة داخل جمل الاستعلام (String Concatenation) هو أكبر جريمة برمجية ممكن ترتكبها:
PHP:
من فضلك قم , تسجيل الدخول أو تسجيل لعرض المحتوى
لما بتستخدم الـ Prepared Statements، قاعدة البيانات بتعامل مدخلات المستخدم على إنها مجرد نصوص (Literals) مش أوامر SQL قابلة للتنفيذ، وبكده الثغرة بتموت تماماً.

2. التصدي لثغرات Cross-Site Scripting (XSS)
لما تطبع أي نص جاي من المستخدم أو من قاعدة البيانات في صفحة HTML، لازم يمر على دالة التعقيم الصارمة:
PHP:
من فضلك قم , تسجيل الدخول أو تسجيل لعرض المحتوى
استخدام ENT_QUOTES بيضمن تحويل علامات التنصيص الفردية والمزدوجة لكيانات HTML آمنة ويمنع حقن أي سكربتات خبيثة.

3. الحماية من هجمات تزوير الطلبات (CSRF Protection)
الـ CSRF بتخلي الضحية ينفذ أمر بدون علمه (زي تغيير الباسورد أو تحويل رصيد) وهو مسجل دخول في موقعك.
الحل هو توليد Token عشوائي مشفر في الجلسة:
PHP:
من فضلك قم , تسجيل الدخول أو تسجيل لعرض المحتوى
استخدام دالة hash_equals بيمنع هجمات الـ Timing Attacks عند مقارنة التوكنز.

4. قواعد حماية الـ Sessions والجلسات في PHP
في أول ملف السكربت، وقبل استدعاء session_start()، اضبط إعدادات الأمان دي:
PHP:
من فضلك قم , تسجيل الدخول أو تسجيل لعرض المحتوى

كلمة من أخوكم Devil Coder:
الأمان مبيكونش خطوة أخيرة بنعملها قبل التسليم، الأمان أسلوب تفكير بيبدأ مع أول سطر كود بتكتبه.

لو عندكم أي استفسار أو كود حابين نراجعه سوا للتأكد من حمايته، اكتبوه في التعليقات وسأكون متواجد للرد عليكم!
 

AdBlock Detected

We apologize, but you must disable AdBlock to view this site.

We rely on advertisements to support the continuity of the site and provide the best content.