سؤال

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

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

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

المحلول

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

لا يكفي التحقق من صحة جانب العميل فقط ويمكن تجاوزه بسهولة عن طريق تعطيل JavaScript على سبيل المثال.

أوصيك أن تبدأ دائمًا بإضافة التحقق من صحة جانب الخادم وبمجرد اختباره ، يمكنك تمكين التحقق من صحة جانب العميل.

نصائح أخرى

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

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

نماذج الويب

''# VB
If Page.isValid Then
    ''# submit your data
End If

// C#
if(Page.isValid) {
    // submit your data
}

MVC

''# VB
If ModelState.IsValid Then
    ''# submit your data
End If

// C#
if(ModelState.IsValid) {
    // submit your data
}

بمجرد أن يعمل التحقق من صحة جانب الخادم ، ثم تابع وأضف التحقق من صحة جانب العميل. سيجعل التجربة أفضل للمستخدم

شيء واحد أوصي به هو استخدام فلينتفاييد, xval و jQuery معًا لأداء التحقق من صحة جانب العميل والخادم بناء على نفس القواعد.

فلينتفاييد هو إطار عمل قائم على القواعد يتحقق من صحة كائنات .NET على جانب الخادم. يأتي مع مزود القواعد ل xval, ، وهو إطار آخر يتيح لك ربط اختيارك لأطر التحقق من جانب الخادم وأطر التحقق من جانب العميل. وهو يدعم توليد صحة jQuery على جانب العميل

عموما على كلا الجانبين. يمكن بسهولة تجاوز جانب العميل إما عن قصد أو براءة (مع انتشار noscript) ولكنه يستحق أن يكون لأسباب قابلية الاستخدام.

فيما يتعلق بما إذا كان يمثل خطرًا أمنيًا. ما الذي تستخدمه إدخال المستخدم وما هي الطبيعة الحالية للتحقق من صحةك؟

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

مطلوب لاستخدامه في التحقق من صحة من جانب الخادم ، لأنه يمكن تجاوز التحقق من صحة جانب CLIE.

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

الأكثر شيوعًا هو استخدام كل من التحقق من صحة جانب العميل والخادم.

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

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

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