Zerious San نشر الأربعاء في 14:00 أرسل تقرير نشر الأربعاء في 14:00 (معدل) عند استخدام post في fetch في laravel لابد يكون هناك token او يحدث خطأ. هل وجود token في ال head او body شيء غير امن؟ , ام هناك طريقة لجعل token غير موجود في html? تم التعديل في الأربعاء في 14:01 بواسطة Zerious San 2 اقتباس
0 عبد الوهاب بومعراف نشر الأربعاء في 14:03 أرسل تقرير نشر الأربعاء في 14:03 السلام عليكم ورحمة الله، وجود CSRF token في طلبات POST في Laravel هو إجراء أمني ضروري لمنع هجمات Cross-Site Request Forgery ووضع التوكن داخل الـ HTML من خلال meta tag أو hidden input أو إرساله في headers عبر fetch ليس غير آمن بحد ذاته لأن التوكن ليس سرّا مثل API key بل هو قيمة قصيرة العمر ومرتبطة بجلسة المستخدم ومفيدة فقط داخل المتصفح نفسه. الخطر الوحيد هو إذا قام المطور بكتابة التوكن داخل ملف JavaScript ثابت بحيث يمكن لأي شخص تحميله من السيرفر وهذا خطأ والطريقة الصحيحة هي جعل Laravel يولّد التوكن داخل الصفحة (Blade) ثم قراءته من DOM وإرساله مع كل POST أو إزالة الحاجة له تماما عند بناء API باستخدام sanctum أو passport حيث يتم تعطيل CSRF واعتماد نظام token-based authentication. اقتباس
0 ياسر مسكين نشر الأربعاء في 14:07 أرسل تقرير نشر الأربعاء في 14:07 السلام عليكم ورحمة الله تعالى وبركاته، وجود ال CSRF token في HTML أو ال header ليس غير آمن بطبيعته بل هو تصميم مقصود للحماية من ال CSRF attacks ف Laravel يولّد token فريد لكل session ويخزّنه في ال server-side وعند إرسال الطلب يقارن بين القيمتين للتحقق من صحة الطلب. أي أنّ إرسال الـ token في ال header مثل X-CSRF-TOKEN يعدّ أكثر أمانا من إرساله في ال body لأن سياسة CORS تمنع JavaScript من إضافة custom headers في cross-origin requests بينما يمكن استغلال form tags لإرسال بيانات body دون قيود Same-Origin Policy. وهنا نجد أنّ Laravel نفسه يوفّر آلية أكثر أمانا عبر XSRF-TOKEN cookie المشفّر الذي يرسل تلقائيا مع كل response حيث يمكن لمكتبات مثل Axios قراءته وإرساله في ال header دون تعريضه في HTML. ولإخفاء ال token من HTML تماما يمكنك استخدام ال XSRF-TOKEN cookie مع: HttpOnly: false وهو إعداد Laravel الافتراضي وذلك لتمكين JavaScript من قراءته أو استخدم HttpOnly cookies لل authentication tokens الحساسة فقط مع الاحتفاظ ب CSRF token متاحا لل client-side فالمشكلة الحقيقية ليست في ظهور ال token في HTML بل في XSS vulnerabilities التي تمكّن المهاجم من سرقة أي token سواء كان في HTML أو cookies غير HttpOnly. اقتباس
السؤال
Zerious San
عند استخدام post في fetch في laravel لابد يكون هناك token او يحدث خطأ. هل وجود token في ال head او body شيء غير امن؟ , ام هناك طريقة لجعل token غير موجود في html?
تم التعديل في بواسطة Zerious San2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.