0Pricing
HTML Academy · درس

الأمان: ما يجب عدم تخزينه مطلقًا

تجنب تخزين الرموز أو معلومات التعريف الشخصية في localStorage

الأمان: ما يجب عدم تخزينه مطلقًا درس مجاني في HTML Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في HTML Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة HTML Academy 4 دروس في المجموع.

التخزين نص عادي

يحفظ localStorage وsessionStorage البيانات على القرص من دون تشفير ضمن ملف تعريف المستخدم. ويمكن لأي عملية تملك صلاحية الوصول إلى نظام الملفات، بما في ذلك البرمجيات الخبيثة وأدوات النسخ الاحتياطي أو مستخدم آخر سجّل الدخول، قراءة كل قيمة خزّنتها من دون المرور عبر المتصفح.

يمكن لأي نص برمجي الوصول إليه

تشترك جميع النصوص البرمجية التي تعمل على الأصل في Storage نفسه. ويمكن لهجوم XSS ناجح أو SDK تابع لجهة خارجية تم اختراقه أو إضافة متصفح خبيثة استدعاء localStorage.getItem واستخراج كل قيمة مخزنة. ولا يوجد عزل بين النصوص البرمجية.

لا تخزّن رموز المصادقة مطلقًا

لا تضع رموز الجلسات أو JWTs أو رموز التحديث أو مفاتيح API في localStorage. فإذا حقن مهاجم سطرًا واحدًا من JavaScript، يتسرب الرمز فورًا. استخدم ملفات تعريف الارتباط httpOnly وSecure وSameSite، حتى لا يكون الرمز متاحًا من JavaScript.

لا تخزّن كلمات المرور مطلقًا

يُعد تخزين كلمات المرور بأي صورة، سواءً كانت نصًا عاديًا أو مجزأة أو مشفرة، أمرًا خاطئًا على العميل. ولا تساعد التجزئة من جانب العميل عندما يستطيع المهاجم قراءة التجزئة وإعادة استخدامها. يجب أن تتم معالجة كلمات المرور بالكامل على الخادم باستخدام تجزئة مخصصة لكلمات المرور مثل bcrypt.

لا تخزن بيانات بطاقات الائتمان مطلقًا

تحظر PCI-DSS تخزين أرقام البطاقات أو رموز CVV أو بيانات الشريط المغناطيسي أو تواريخ انتهاء الصلاحية في تخزين جهة العميل. استخدم بدلًا من ذلك مزود دفع يعتمد على الرموز مثل Stripe أو Braintree أو Adyen، ويعيد رمزًا قصير العمر مرتبطًا بأصلك.

لا تخزن المعرفات الشخصية مطلقًا

تجذب أرقام الهوية الحكومية وتواريخ الميلاد الكاملة وعناوين المنزل والبيانات الطبية انتباه الجهات التنظيمية مثل GDPR وHIPAA والمهاجمين. لا تخزن سوى ما يلزم للجلسة الحالية، واطلب البيانات مجددًا عند الحاجة، ودع الخادم يحتفظ بالمرجع الأساسي.

يضاعف XSS الضرر

يُعد وجود خلل XSS يؤدي إلى تسريب document.cookie أمرًا سيئًا. أما وجود الخلل نفسه في صفحة تخزن الرموز في localStorage، فيمنح المهاجم كل قيمة مخزنة دفعة واحدة. تعامل مع localStorage على أنه سطح يعني: «إذا اخترق المهاجم برنامجًا نصيًا واحدًا، فقد اخترق كل شيء».

التشفير لا ينقذك

لا يوفر تشفير القيم باستخدام مفتاح موجود أيضًا في JavaScript حماية حقيقية — فالمهاجم الذي يستطيع قراءة النص المشفر يستطيع قراءة المفتاح أيضًا. يجب أن تبقى الأسرار الحقيقية على الخادم، وأن يُعاد إصدارها، وألا تُحفظ مطلقًا على جهة العميل.

أشياء آمنة للتخزين

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

localStorage.setItem("theme", "dark");
localStorage.setItem("sidebar:collapsed", "true");
localStorage.setItem("draft:post-123", draftMarkdown);

استخدم ملفات تعريف الارتباط للمصادقة

أصدر المصادقة عبر Set-Cookie: token=...; HttpOnly; Secure; SameSite=Strict. تجعل الراية HttpOnly ملف تعريف الارتباط غير متاح لـ JavaScript، مما يبطل معظم حمولات XSS التي تسرق الرموز حتى عند وجود أخطاء أخرى في الصفحة.

إجراءات الحد من المخاطر عند استخدام التخزين

إذا اضطررت إلى تخزين بيانات تبدو حساسة مؤقتًا، فاحصر نطاقها بإحكام، وحدد مدة TTL قصيرة، وامسحها عند تسجيل الخروج، وأزلها عند إغلاق علامة التبويب باستخدام sessionStorage، وطبّق سياسة أمن محتوى صارمة لحظر البرامج النصية المحقونة، وافحص كل برنامج نصي تابع لجهة خارجية يعمل في الصفحات التي تتطلب المصادقة.

اختبار المعرفة

لماذا تُعد رموز المصادقة المخزنة في localStorage خطرًا أمنيًا؟

الملخص

إن Web Storage عبارة عن نص عادي، ويمكن للبرامج النصية قراءته، وهو مشترك على مستوى الأصل. لا تضع فيه رموز المصادقة أو كلمات المرور أو بيانات الدفع أو المعلومات الشخصية الخاضعة للتنظيم مطلقًا. احتفظ بالأسرار في ملفات تعريف ارتباط httpOnly، واقصر استخدام localStorage على حالة واجهة المستخدم غير الضارة التي يمكن للمستخدم رؤيتها على أي حال.

الأسئلة الشائعة

هل درس «الأمان: ما يجب عدم تخزينه مطلقًا» مجاني؟

نعم — نص درس «الأمان: ما يجب عدم تخزينه مطلقًا» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة HTML Academy، انتقل إلى CoddyKit PRO. تتضمن دورة HTML Academy 4 دروس في المجموع.

ماذا ستتعلم في «الأمان: ما يجب عدم تخزينه مطلقًا»؟

تجنب تخزين الرموز أو معلومات التعريف الشخصية في localStorage تتمرن على HTML Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ HTML Academy؟

لا تُشترط خبرة سابقة. HTML Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «الأمان: ما يجب عدم تخزينه مطلقًا»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس HTML Academy هذا؟

نعم. كل درس في HTML Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. localStorage في مقابل sessionStorage
  2. الحصول على العناصر وتعيينها وإزالتها
  3. الاستماع إلى أحداث التخزين
  4. الأمان: ما يجب عدم تخزينه مطلقًا
← العودة إلى HTML Academy