قبول طلبات أجاكس معينة فقط من المستخدمين المصادق عليهم

StackOverflow https://stackoverflow.com/questions/15366

  •  08-06-2019
  •  | 
  •  

سؤال

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

على سبيل المثال:

لنفترض أن لدي صفحة رئيسية تسمى blog.php (أعلم أن الإبداع كثير).لنفترض أيضًا أن هناك صفحة تسمى حذف.php الذي يبحث عن المعلمة بعد معرف ثم يقوم بحذف بعض الإدخالات من قاعدة البيانات.

في هذا المثال المبتكر للغاية، هناك آلية ما في blog.php والتي ترسل طلبًا عبر ajax لحذف.php لحذف إدخال.

الآن ستكون هذه الآلية متاحة فقط للمستخدمين المعتمدين على blog.php.ولكن ما الذي يمنع أي شخص من الاتصال بـdelete.php بمجموعة من الأرقام العشوائية وحذف كل شيء في الموقع؟

لقد أجريت اختبارًا سريعًا حيث قمت بتعيين متغير جلسة في blog.php ثم قمت بإجراء استدعاء ajax لـdelete.php للعودة إذا تم تعيين متغير الجلسة أم لا (لم يكن).

ما هي الطريقة المقبولة للتعامل مع هذا النوع من الأشياء؟


نعم.لا بد أنني كنت مجنونًا في المرة الأولى التي جربت فيها هذا.

لقد أجريت للتو اختبارًا آخر مثل الاختبار الذي وصفته أعلاه وكان يعمل بشكل مثالي.

هل كانت مفيدة؟

المحلول

لقد كنت على حق في محاولة استخدام متغيرات الجلسة.بمجرد مصادقة المستخدم الخاص بك، يجب عليك تخزين هذه المعلومات في جلسته بحيث ترى ذلك في كل مشاهدة لاحقة للصفحة.تأكد من أنك تتصل session_start() على كلا الصفحتين (blog.php وdelete.php) قبل الوصول إلى $_SESSION.تأكد أيضًا من تمكين ملفات تعريف الارتباط - وإذا لم يكن الأمر كذلك، فيجب عليك تمرير معلمة إضافية في سلسلة الاستعلام، عادةً PHPSESSID=<session_id()>.

نصائح أخرى

لا يُنصح بالاعتماد على الجلسات للمصادقة دون اتخاذ إجراءات إضافية.اقرأ المزيد عن.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top