سؤال

الدفع هذه الصفحة من نيويورك تايمز:

http://homedelivery.nytimes.com/HDS/learnMorePopUp.do ?mode=common.learnMorePopUp
&productId=NDS
&prodRate=7.40

لقد فوجئت برؤية ذلك عندما قمت بتعديل الملف يدويًا prodRate المعلمة، تم تحديث الصفحة:

  • سعر الاشتراك التمهيدي.
  • معدل الاشتراك العادي.

جربه بنفسك!الآن، لم أقم بالكثير من تطوير الويب، لكنني أعلم أن هذا ربما لا ينبغي أن يحدث.لذلك أنا أتساءل:

  • ما نوع التنفيذ الذي قد يسبب هذا السلوك؟
  • كيف يمكنك تعديل الصفحة لإخفاء هذه المعلمات الحساسة عن المستخدم النهائي؟
هل كانت مفيدة؟

المحلول

قد ترغب في إعادة صياغة سؤالك، لأن الإجابات الوحيدة التي يمكنني تصورها ليست مفيدة للغاية:

س:ما نوع التنفيذ الذي قد يسبب هذا السلوك؟
أ:واحد يُسمح فيه بإدخال المستخدم بالتحكم في السلوك الداخلي الموثوق به.إذا كنت تسأل "لماذا يفعل شخص ما هذا"، فعادةً ما أعتبره سوء فهم.لا يدرك مؤلف الكود عمومًا أن المستخدم يمكنه (أ) التحكم في القيمة و/أو (ب) حتى اكتشاف وجودها.في أغلب الأحيان، رأيت هذا يتم تنفيذه كإعادة توجيه - تقوم بالنقر فوق الزر، ويحدد الخادم المبلغ ثم يعيد توجيه المتصفح إلى صفحة جديدة تحافظ على القيمة

س:كيف يمكنك تعديل الصفحة لإخفاء هذه المعلمات الحساسة عن المستخدم النهائي؟
أ:لا تقم بتخزين القيمة بطريقة تجعلها قابلة للتحرير بواسطة المستخدم النهائي.إذا كان لديك مساحة تخزينية متاحة على الخادم (مثل محرك Servlet)، فقم بتخزينها في سياق الجلسة.إذا لم تكن لديك آلية جلسة جيدة، فيمكنك تخزينها في ملف تعريف ارتباط موقع أو HMAC.

نصائح أخرى

من المحتمل أنهم يقرأون القيمة مباشرةً من سلسلة الاستعلام لأغراض العرض.أشك بشدة (أو بالأحرى أتمنى حقًا) أن أي معالجة فعلية للطلب لا تعتمد على تلك القيمة، بل على البحث باستخدام معرف المنتج.

حسنا، هل حاولت فعلا أن تأمر به حتى الآن؟قد يتحقق من صحة الإدخال في النهاية الخلفية.

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

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

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

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

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