سؤال

ولدي السيناريو التالي - وما اتطلع حقا هو مساعدة حقيقية من أناس حقيقيين. اقتراحات / حلول؟ من فضلك.

ولدي موقع على شبكة الإكسترانت لالسابقين. www.foo.com (asp.net 3.5) أنا أستخدم مسج 1.3.2 للاتصال PageMethods ValidateLogin في الصفحة Default.aspx (www.foo.com/default.aspx)

وسوف كود تبدو هذه

$.ajax({
            type: "POST",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            url: "Default.aspx/ValidateLogin",
            data: '{' + arg + '}',
            success: function(data) {
                if (data.d != 0) {
                    window.location = "http://www.google.com";
                } else {
                    alert("Invalid UserName/Password.");
                    ResetLoginForm();
                }
            },
            error: function(xhr, status, error) {
                var strerror = xhr.status + error;
                alert("Error Communicating with Server:" + strerror);
                ResetLoginForm();
            }
        });

ويتم تخزين التعليمات البرمجية في ملف خارجي شبيبة. لdefault.js السابقين.

ومنذ هذا الموقع هو الجمهور، يمكن لأي شخص تحميل default.js وبالتالي يمكن أن نلقي نظرة على كود المذكورة أعلاه.

وسؤالي هو مرة واحدة في شخص يحصل على هذا الرابط: "Default.aspx / ValidateLogin"، وانه يمكن تقديم طلب إلى الخادم والخادم سترد بكل فخر لطلب

.

ما هي خياراتي هنا؟ كيف يمكنني التحقق من صحة الطلب؟ كيف يمكنني منع هذا النوع من الطلبات غير مصرح بها؟

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

المحلول

وطلبات ويب هي بطبيعتها والعامة. أنها لا تحتاج حتى للنظر في الملف المصدر. ويمكن ببساطة مراقبة طلبات HTTP وإعادة تلك الطلبات (من السهل جدا مع أداة مثل عازف الكمان على سبيل المثال).

مشكلة اختناق

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

الحل

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

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

وأود أن لا تقلق بشأن ذلك إلا إذا كنت قد حصلت على بعض الخصوم سيئة.

نصائح أخرى

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

وأنا شخصيا لن عناء محاولة لجعله أي أكثر أمنا - كما قال آخرون، وخدمات الإنترنت هي بطبيعتها العامة

.

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

ويمكنك أيضا وضع كلمة التحقق بعد القول الفشل 2-3 الدخول التي ستساعد على تجنب القوة الغاشمة.

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