أمان تطبيقات PHP: 10 نقاط ضعف رئيسية للمبتدئين

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

أمان تطبيقات PHP: أهم 10 نقاط ضعف للمبتدئين



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



1. حقن SQL (SQL Injection)



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



الكود الخطير:

<?php$id = $_GET['id'];$query = "SELECT * FROM users WHERE id = $id";$result = mysqli_query($conn, $query);?>


كيفية الحماية: استخدم الاستعلامات المُعدة (prepared statements) مع PDO أو MySQLi.



<?php$stmt = $pdo->prepare("SELECT * FROM users WHERE id = :id");$stmt->execute(['id' => $_GET['id']]);?>


2. XSS (البرمجة النصية عبر المواقع)



تسمح XSS للمهاجم بإدخال كود JavaScript ضار في الصفحة التي تظهر للمستخدمين الآخرين. يمكن أن يؤدي ذلك إلى سرقة ملفات تعريف الارتباط الخاصة بالجلسة أو إعادة التوجيه إلى مواقع التصيد.



الكود الخطير:

<?phpecho "مرحبًا، " . $_GET['name'];?>


كيفية الحماية: قم دائمًا بتنقية المخرجات باستخدام htmlspecialchars().



<?phpecho "مرحبًا، " . htmlspecialchars($_GET['name'], ENT_QUOTES, 'UTF-8');?>


3. CSRF (تزوير الطلب عبر المواقع)



هجوم CSRF يجبر المستخدم المُصرح له على تنفيذ إجراء غير مرغوب فيه على الموقع (مثل تغيير كلمة المرور أو تحويل الأموال). يحدث الهجوم عندما ينتقل المستخدم عبر رابط على موقع طرف ثالث.



كيفية الحماية: استخدم رموز CSRF المميزة لجميع النماذج والطلبات التي تغير الحالة.



<?phpsession_start();if (empty($_SESSION['csrf_token'])) {    $_SESSION['csrf_token'] = bin2hex(random_bytes(32));}?><form method="POST">    <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">    <button type="submit">حذف الحساب</button></form>


4. التعامل غير الآمن مع الملفات



يسمح للمهاجم بقراءة أو كتابة ملفات عشوائية على الخادم. على سبيل المثال، من خلال تجاوز المسار (path traversal) أو تحميل قذائف PHP.



الكود الخطير:

<?phpinclude($_GET['page'] . '.php');?>


كيفية الحماية: لا تستخدم أبدًا إدخال المستخدم في مسارات الملفات. استخدم القوائم البيضاء للقيم المسموح بها.



<?php$allowed_pages = ['home', 'about', 'contact'];$page = $_GET['page'] ?? 'home';if (in_array($page, $allowed_pages)) {    include($page . '.php');} else {    include('404.php');}?>


5. عيوب المصادقة وإدارة الجلسات



كلمات المرور الضعيفة، وغياب الحماية من التخمين، وتثبيت الجلسة - كل هذا يفتح الطريق أمام الاستيلاء على الحسابات.



التوصيات:

  • قم بتخزين كلمات المرور فقط بشكل مشفر باستخدام password_hash().
  • استخدم HTTPS لجميع صفحات تسجيل الدخول.
  • أعد إنشاء معرف الجلسة بعد تسجيل الدخول: session_regenerate_id(true).
  • اضبط وقت حياة قصير للجلسة.


6. الإشارة المباشرة غير الآمنة للكائن (IDOR)



ID

المدونات

توصيات الكتب