سؤال

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

  • استخدام Request.UrlReferrer (وهو المرجع رأس HTTP).يؤدي هذا دائمًا إلى إرجاع سلسلة فارغة.أعتقد أن السبب في ذلك هو أن الارتباطات التشعبية تستخدم Javascript لتشغيل نافذة منبثقة.بناءً على بحثي، يوفر وكيل المستخدم رأس HTTP هذا على الارتباطات التشعبية القياسية.النوافذ المنبثقة لجافا سكريبت هي قصة مختلفة (من الواضح).

  • سلسلة استعلام بسيطة للإشارة إلى المُحيل.هذا ليس خيارًا حقًا لأننا نحتاج إلى شيء ليس من السهل تجاوزه (أكثر أمانًا).

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

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

المحلول

لا توجد طريقة موثوقة لمعرفة المكان الذي يأتي منه المستخدم، ولا يقتصر هذا على قيود ASP.NET فحسب، بل يشمل جميع تطبيقات الويب بشكل عام.يمكن بسهولة انتحال مُحيل عنوان url بحيث لا يمكن الاعتماد عليه.أعتقد أن الخيار الأفضل قد يكون بعض معلمات URL المشفرة، أو ملف تعريف الارتباط إذا كنت تفضل ذلك.

لذلك يجب أن تتفق كلتا الصفحتين على المفاتيح الخاصة المشتركة.

  1. ستستخدم الصفحة 1 المفتاح لتشفير عنوانها وتمريره إلى الصفحة 2
  2. ستتحقق الصفحة 2 من وجود هذه المعلمة وتحاول فك تشفيرها باستخدام نفس المفتاح الخاص المستخدم للتشفير
  3. إذا نجح ذلك فهذا يعني أن الصفحة 2 ستكون قادرة على تحديد من اتصل بها، وإذا لم ينجح ذلك، فقد تم التلاعب بالبيانات

نصائح أخرى

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

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

أو يمكنك وضع صورة بحجم 1 × 1 بكسل على مواقع الإحالة التي يتم سحبها من موقع تطبيق ASP.NET الخاص بك.يجب أن يتم تمرير المُحيل إلى البرنامج النصي ويمكنك بعد ذلك تعيين ملف تعريف ارتباط على جهاز المستخدمين والذي يمكنك بعد ذلك الرجوع إليه عند وصولهم إلى الصفحة الرئيسية للتطبيق.

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