قد تُحفظ البيانات بشكل صحيح وتُعرض بشكل غير آمن

تخيل موقع أعضاء يحفظ ملاحظة قصيرة للعميل في باك إند مستضاف. تُسترجع الملاحظة للمستخدم الصحيح، ثم تضعها الواجهة داخل الصفحة كـ HTML مباشر بهدف الاحتفاظ بالتنسيق. هنا نجاح التخزين لا يجيب عن سؤال أمان العرض.

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

حدد قاعدة العرض حسب حاجة المنتج

تميز إرشادات OWASP لمنع XSS بين التعامل المناسب مع النص في موضع عرضه وبين تنقية HTML عند الحاجة إليه. النص العادي يحتاج مسار عرض نصي، بينما المحتوى المنسق يحتاج قواعد واضحة وأداة تنقية يتم تحديثها.

قرارات عرض عملية لبوابة عملاء
الحقلالحاجة الفعليةالقرار المقترح
الاسم الظاهرنص مقروءعرض كنص دون HTML
ملخص مقالةمعاينة قصيرةاستخدام ملخص نصي
رابط موقع العميلوجهة قابلة للزيارةالتحقق من أنواع الروابط المسموحة
ملاحظات منسقةتنسيق محدودتحديد التنسيق وتنقية المحتوى

لا تحول طلبًا بسيطًا لتحسين الشكل إلى محرر HTML مفتوح دون مراجعة ما سيضيفه إلى التطبيق من مسؤوليات.

رد الذكاء الاصطناعي يظل بيانات تحتاج معالجة

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

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

اجعل CSP طبقة إضافية مفهومة

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

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

ضع معايير قبول يستطيع الفريق مراجعتها

  1. احصر أماكن عرض نص المستخدم وقيم الروابط والمحتوى المستورد وإجابات الذكاء الاصطناعي.
  2. حدد لكل مكان هل المطلوب نص عادي أم رابط متحقق منه أم تنسيق محدود.
  3. راجع المواضع التي تتجاوز الحماية الافتراضية لإطار العمل أو تنشئ HTML مباشرة.
  4. تتبع أي تحويل أو تنقية حتى الموضع النهائي، لأن التعديل اللاحق قد يغير النتيجة.
  5. عين مسؤولًا عن تحديث مكتبات العرض والتنقية ومراجعة سياسة CSP المنشورة.

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

أين ينتهي دور التخزين ويبدأ دور الواجهة؟

تصف وثائق Gammal Tech تسجيل الدخول المستضاف وتخزين JSON لكل مستخدم داخل كل مشروع. هذا قد يقلل الباك إند المحلي الذي تديره شركتك. الواجهة ما زالت مسؤولة عن عرض المعلومات التي تسترجعها.

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

اكتب قاعدة العرض ضمن وصف الوظيفة

يمكن أن يكون وصف الميزة واضحًا مثل: «ملاحظات العميل نص عادي، مع الحفاظ على فواصل السطور دون تفسير HTML». بهذه الطريقة يستطيع المصمم تحسين الشكل لاحقًا دون تغيير قاعدة الثقة دون قصد.

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

أسئلة شائعة

هل XSS ممكنة إذا لم توجد قاعدة بيانات على سيرفر الموقع؟

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

هل CSP وحدها تكفي؟

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

مصادر ومراجع