كيف يمكنني منع شكل من تقديمها أكثر من مرة في غضون 5 دقائق ؟

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

سؤال

لقد وجدت مؤخرا أمنية ضخمة المشكلة مع بلدي PM النظام الذي يسمح للمستخدمين بإرسال رسالة بقدر ما تريد مع for حلقة في شريط العنوان.شخص ما وضع هذا العنوان في شريط العنوان:

javascript:for(x=0;x<10000;x++){ $('#compose form').submit(); }

و تم إرسال الرسالة 1000 مرة لي علبة كاملة من نفس الرسالة و قاعدة بيانات كاملة بحيث بريس يجري laggy جدا.

سؤالي هو كيف يمكن منع هذا ؟ هذا هو الرئيسية هذه المسألة.

أيضا, يتم إرسال النموذج مع اياكس.

تحرير:

يمكنني استخدام PHP, كيف يمكنني منع هذا ؟ مثل كيف يمكن أن تجعل من أين رسالة لا يمكن إلا أن ترسل كل 5 دقائق أو حتى لو أنها تقدم أكثر من واحد في غضون 5 دقائق فإنه سيتم عرض رسالة خطأ (أو لا تظهر أي ردود فعل المستخدمين في جميع توقف من المقدمة)?

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

المحلول

هناك طريقة واحدة واضحة المشكلة و المشكلة لا تكمن في جانب العميل - انها تقع على جانب الملقم.

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

طريقة الدورة ينبغي تنفيذها (رمز معين) يعتمد على اللغة التي تستخدمها على جانب الملقم البرمجة (PHP, Python, JSP.... الخ).

نصائح أخرى

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

أعتقد أن أبسط طريقة لحساب الطلبات الواردة من عنوان IP محدد (ومن الواضح أن هذا له عيوب مثل العديد من المستخدمين من خلال وكيل أو NAT الخ).

الحل الفعلي سيعتمد على جانب الملقم اللغة ملقم ويب ولكن ربما كنت يمكن أن الإطار حتى القاعدة ونرى كيف يعمل.5 طلبات في الدقيقة (أو كل ما هو مناسب للاستخدام الخاص) لكل عنوان IP.

كما قال آخرون ، لديك لتنفيذ الحماية على الخادم.أي كمية من جانب العميل الترميز توفير الحماية.

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

على سبيل المثال ، يمكن أن تقرر أنك لن تسمح أكثر من رسالة واحدة دقيقة وليس أكثر من رسالتين كل 10 دقائق و لا تزيد عن أربع رسائل ساعة.يمكنك اختيار ما تعتقد يبدو من المعقول وأنت رمز إلى أن الخوارزمية.

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

أنا أتفق مع كل ما نشر حول الحد من معدل.

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

بدلا من تنفيذ هذه نفسك قد ترغب في النظر في خدمة طرف ثالث للقيام بذلك بالنسبة لك مثل هذا من رائع خدمات ويب الوكيل Apigee

واحدة من الميزات, على وجه التحديد, API معدل اختناق.(انظر الرابط)

enter image description here

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