محتويات الدورة

PHP / متقدم: النماذج الموثوقة وأدلة التشغيل / الدرس 15

حدود الأمن والعمليات الحساسة

اربط التحقق وربط SQL والإخراج والجلسة والتصريح دون تسمية دفاع واحد منقياً عاماً. استخدم أمثلة محلية مصطنعة وتحقق كلمة مرور آمن.

وقت القراءة التقريبي: 3 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • تتبع غير الموثوق لمواضع خاصة بالسياق.
  • استخدام واجهات كلمة المرور دون كشف اعتماد.
  • إبقاء الإذن وسياسات المورد للخادم.

فصل خمسة أسئلة أمنية مختلفة

يسأل التحقق عن المجال ويفصل التحضير القيم عن SQL ويضبط التهريب السياق وتثبت المصادقة الهوية ويقرر التصريح الفعل على المورد الآن. لا يستبدل أحدها الآخر. قد يسمى عدد صالح سجل متعلم آخر ويكشف عنوان مهرب خاصاً. تتبع المصدر والتحويل والموضع لا وسم «منقى». اختبر سجلات مملوكة مصطنعة لا أنظمة حية.

استخدام تجزئة كلمة المرور لا التخزين القابل للعكس

تنشئ password_hash متحققاً وتفحص password_verify المدخل. لا تستخدم تجزئة سريعة خاصة أو نصاً أو تقارن تجزئتين مملحتين جديدتين. قد يتغير PASSWORD_DEFAULT، فاستوعب التمثيل وراجع الخوارزمية والكلفة. يستخدم المثال كلمة تعليم مصطنعة ويطبع المنطقي لا التجزئة المتغيرة. يفحص الواجهة لا منظومة مصادقة كاملة بحدود المعدل والاستعادة والجلسات.

php سلوك تحقق مصطنع دون كشف التجزئة
<?php
declare(strict_types=1);
$hash = password_hash("synthetic-demo-passphrase", PASSWORD_DEFAULT);
echo password_verify("synthetic-demo-passphrase", $hash) ? "match
" : "no match
";
echo password_verify("different-demo-value", $hash) ? "match
" : "no match
";
الناتج المتوقع
match
no match

التجزئة مملحة عشوائياً لكن نتيجتي المدخلين حتميتان.

التصريح للفاعل والفعل والمورد معاً

يفحص الخادم الإذن ولو أخفت الواجهة الزر، بما فيه التصدير وAPI. قد يتقادم دور الجلسة فتحتاج الحساسة مصدراً حالياً. تسمح السياسة الخالصة للمتعلم بسجله وللمسؤول قراءة محدودة كنموذج لا مصادقة. تحتاج الفعلية نطاق المؤسسة وظهور السجل وشروط الفعل ولا تستنتج من الاختصار.

php سياسة وصول مصطنعة صريحة
<?php
declare(strict_types=1);
function canRead(string $role, int $actorId, int $ownerId): bool {
    return $role === "admin" || ($role === "learner" && $actorId === $ownerId);
}
echo canRead("learner", 1, 1) ? "allow
" : "deny
";
echo canRead("learner", 1, 2) ? "allow
" : "deny
";
echo canRead("guest", 1, 1) ? "allow
" : "deny
";
الناتج المتوقع
allow
deny
deny

لا تعني صحة المعرف إذن الملكية، ولا يرث الدور المجهول قاعدة المتعلم.

تقييد المسارات والرفع والتحويل وفك التسلسل

تحتاج المسارات والعناوين سماحاً قبل الملفات والتدفقات والتحويل والشبكة. لا تثبت بادئة نصية بقاء المسار المحلول داخل المسموح. يحتاج الرفع سياسات اسم وحجم ومحتوى وتخزين وتنفيذ. تجنب unserialize للخارج؛ فـJSON مع تحقق أضيق. لا تصل المدخل بأمر صدفة أو تقيمه PHP. تعالج هذه مفسرات مختلفة لا تحميها عبارة قاعدة محضرة تلقائياً.

إبقاء الأسرار خاصة والادعاءات محدودة

سجل سياقاً آمناً ومعرف ربط لا كلمات وتجزيئات ورموزاً وبيانات خاصة. افصل الخطأ العام من التشخيص. راجع الاعتماد والإصدار والجلسة كالتزامات مستمرة. يفحص الاختبار غياب المحظور ويتضمن مسموحاً ضابطاً. وثّق الفاعلين والموارد والبيئات والعالق؛ فلا تثبت أمثلة أو ماسح غياب الثغرات ولا تمنح الدورة شهادة أمن.

الأخطاء الشائعة وإصلاحها

الثقة بوسم منقى في كل موضع

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

إعادة تجزئة مملحة ومقارنتها نصياً

لماذا يحدث؟
سوء فهم المتحقق.
كيف تصلحه؟
استخدام password_verify مع المخزن.
كيف تتجنب تكراره؟
اختبار المطابقة والخلاف وسياسة إعادة التجزئة.

اعتبار العنصر المخفي تصريحاً

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

اختبر فهمك

1. لماذا لا تقارن password_hash للمدخل بالمخزن؟

اعرض الحل المشروح

قد تختلف التجزئة المملحة الجديدة للكلمة نفسها. تفهم password_verify المخزن. احفظ التجزئة وراجع الإعادة وافحص حماية مسار المصادقة مستقلة.

2. ماذا يفحص اختبار قراءة غير مأذونة غير الحالة؟

اعرض الحل المشروح

افحص عدم تسرب الخاص والمعرفات أو أثر تغيير، وأدرج مالكاً مسموحاً لضمان الاستخدام. استخدم مصطنعاً بمعزل مصرح وحدد النطاق لا إثباتاً عاماً.

أهم ما تعلمته

  • تحتاج حدود الثقة المختلفة دفاعات مختلفة.
  • يشمل دليل الأمن المحظور والمسموح والحدود.

المراجع الرسمية