سؤال

ما هي أفضل الطرق (أو على الأقل الطرق الأكثر شيوعًا) في ASP (VBScript) لمعالجة الإدخال؟اهتماماتي الرئيسية هي حقن HTML/JavaScript وحقن SQL.هل هناك ما يعادل PHP htmlspecialchars أو addslashes, ، إلى آخره؟أو هل يجب علي القيام بذلك يدويًا باستخدام شيء مثل وظائف استبدال السلسلة؟

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

المحلول

خلاصة القول هي:

  1. قم دائمًا بتشفير مدخلات المستخدم بتشفير HTML قبل كتابتها على صفحتك. Server.HTMLEncode() يفعل ذلك لك.
  2. استخدم دائمًا الاستعلامات ذات المعلمات للتفاعل مع قاعدة البيانات.ال ÀDODB.Command و ADODB.CommandParameter الكائنات هي الاختيار الصحيح هنا.
  3. استخدم دائمًا الأداة المساعدة URLScan وتأمين IIS على خادم IIS الذي يعرض الصفحة، ما لم يكن الإصدار 6 وما فوق، والذي لم يعد يتطلب هذه الأدوات بعد الآن.

إذا التزمت بالنقطتين 1 و 2 بخنوع, ، لا أستطيع التفكير في الكثير مما يمكن أن يحدث بشكل خاطئ.

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

نصائح أخرى

وأود أن أضيف إلى قائمة Tomalaks نقطة واحدة أخرى.

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

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

وهناك اعتبار آخر هو أن هذا هو مجرد الحد الأدنى من الحماية. بكل ما فيها من به هو جعل هجوم محاولات غير مؤذية. ولكن في كثير من الحالات قد يكون من الأفضل أن تضيف إلى هذا النظام الذي يمنع دخول مثل هذه البيانات altogther و / أو يغير مدراء لهجوم حقن المحتملين.

وهذا هو المكان الذي يصبح التحقق من صحة المدخلات الهامة. أنا لا أعرف من أي الأدوات التي تفعل ذلك بالنسبة لك ولكن بعض التعبيرات المعتادة بسيطة قد تساعد. على سبيل المثال، "<\ ث +" من شأنها الكشف عن محاولة تضمين علامة HTML في هذا المجال.

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