لقد رأيت كيفية التحقق من صحة المدخلات التي تأتي من العالم الخارجي إلى تطبيق Express الخاص بك.
هناك شيء واحد تتعلمه بسرعة عند تشغيل خادم يواجه الجمهور: لا تثق أبدًا في المدخلات.
حتى إذا قمت بالتعقيم والتأكد من عدم تمكن الأشخاص من إدخال أشياء غريبة باستخدام رمز من جانب العميل ، فستظل خاضعًا للأشخاص الذين يستخدمون الأدوات (حتى أدوات تطوير المتصفح فقط) لـ POST مباشرة إلى نقاط النهاية الخاصة بك.
أو الروبوتات التي تحاول كل تركيبة ممكنة من الاستغلال المعروف للبشر.
ما عليك القيام به هو تعقيم المدخلات الخاصة بك.
الexpress-validator
صفقةالذي تستخدمه بالفعل للتحقق من صحة الإدخال يمكن استخدامه أيضًا بشكل ملائم لأداء التعقيم.
لنفترض أن لديك نقطة نهاية POST تقبل الاسم والبريد الإلكتروني ومعلمات العمر:
const express = require('express')
const app = express()
app.use(express.json())
app.post(’/form’, (req, res) => {
const name = req.body.name
const email = req.body.email
const age = req.body.age
})
يمكنك التحقق من صحتها باستخدام:
const express = require('express')
const app = express()
app.use(express.json())
app.post(’/form’, [
check(‘name’).isLength({ min: 3 }),
check(‘email’).isEmail(),
check(‘age’).isNumeric()
], (req, res) => {
const name = req.body.name
const email = req.body.email
const age = req.body.age
})
يمكنك إضافة التعقيم عن طريق توصيل طرق التعقيم بعد طرق التحقق من الصحة:
app.post('/form', [
check('name').isLength({ min: 3 }).trim().escape(),
check('email').isEmail().normalizeEmail(),
check('age').isNumeric().trim().escape()
], (req, res) => {
//...
})
هنا استخدمت الطرق:
trim()
تقطع الأحرف (المسافة البيضاء افتراضيًا) في بداية السلسلة ونهايتهاescape()
يستبدل<
و>
و&
و'
و"
و/
مع كيانات HTML المقابلة لهاnormalizeEmail()
يجعل عنوان البريد الإلكتروني عنوانًا أساسيًا. يقبل عدة خيارات لعناوين البريد الإلكتروني الصغيرة أو العناوين الفرعية (على سبيل المثال[email protected]
)
طرق التعقيم الأخرى:
blacklist()
إزالة الأحرف التي تظهر في القائمة السوداءwhitelist()
إزالة الأحرف التي لا تظهر في القائمة البيضاءunescape()
يستبدل الكيانات المشفرة بتنسيق HTML بـ<
و>
و&
و'
و"
و/
ltrim()
مثل الاقتطاع () ، ولكن يتم اقتطاع الأحرف فقط في بداية السلسلةrtrim()
مثل الاقتطاع () ، ولكن يتم اقتطاع الأحرف فقط في نهاية السلسلةstripLow()
إزالة أحرف التحكم ASCII ، والتي عادة ما تكون غير مرئية
فرض التحويل إلى تنسيق:
toBoolean()
تحويل سلسلة الإدخال إلى قيمة منطقية. كل شيء باستثناء "0" و "خطأ" و "يعود صحيحًا. في الوضع المقيد ، يتم إرجاع "1" و "صحيح" فقطtoDate()
تحويل سلسلة الإدخال إلى تاريخ ، أو فارغة إذا لم يكن الإدخال تاريخًاtoFloat()
تحويل سلسلة الإدخال إلى عدد عشري ، أو NaN إذا لم يكن الإدخال عددًا عشريًاtoInt()
تحويل سلسلة الإدخال إلى عدد صحيح ، أو NaN إذا لم يكن الإدخال عددًا صحيحًا
كما هو الحال مع أدوات التحقق المخصصة ، يمكنك إنشاء معقم مخصص.
في وظيفة رد الاتصال ، تقوم فقط بإرجاع القيمة المعقمة:
const sanitizeValue = value => {
//sanitize...
}
app.post(’/form’, [
check(‘value’).customSanitizer(value => {
return sanitizeValue(value)
}),
], (req, res) => {
const value = req.body.value
})
تحميل مجانيكتيب Express.js
المزيد من البرامج التعليمية السريعة:
- Express ، إطار عمل Node.js شائع
- استرجع معلمات سلسلة استعلام GET باستخدام Express
- التحقق من صحة الإدخال في Express باستخدام أداة التحقق السريع
- القوالب السريعة
- خدمة الأصول الثابتة مع Express
- أرسل ردًا JSON باستخدام Express
- جلسات اكسبريس
- أرسل ردًا باستخدام Express
- أرسل الملفات باستخدام Express
- تعقيم المدخلات في Express باستخدام أداة التحقق السريع
- التوجيه في Express
- خادم Express HTTPS بشهادة موقعة ذاتيًا
- اكسبريس ، معلمات الطلب
- استرجع معاملات استعلام POST باستخدام Express
- التعامل مع عمليات إعادة التوجيه مع Express
- Express Middleware
- الإعداد دعونا نشفر Express
- العمل مع رؤوس HTTP في Express
- التعامل مع النماذج في Express
- التعامل مع تحميلات الملفات في النماذج باستخدام Express
- التعامل مع CORS في Express
- إدارة ملفات تعريف الارتباط مع Express