十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Node系列 · ORM:数据验证

Node系列 · ORM:数据验证 Node系列 · ORM数据验证数据验证是后端的第一道防线——不合法数据应该在入库前被拦下。本章讲清楚字符串级验证validator、对象级 schema 验证validator.js/ Joi、以及验证的层次划分。一、为什么要验证风险验证可解决的问题数据脏邮箱格式错、手机号位数错导致后续短信发不出去安全XSSname script...、SQL 注入name 1 OR ...业务错数量为负、起止日期倒置崩溃字段长度超出数据库限制写入报错::: danger永远不要信任客户端传来的数据。前端表单验证只是 UX后端验证才是安全底线——绕过前端是分分钟的事。:::二、字符串级验证validator最常用的字符串验证库。npminstallvalidator2.1 常用验证方法const validator require(validator); // 邮箱 validator.isEmail(aliceexample.com); // true validator.isEmail(not-an-email); // false // 手机号不同国家规则不同 validator.isMobilePhone(13800138000, zh-CN); // true validator.isMobilePhone(13800138000, en-US); // false // URL validator.isURL(https://example.com); // true // IP validator.isIP(192.168.1.1); // true validator.isIP(192.168.1.1, ipv4); // 显式指定 validator.isIP(::1, ipv6); // true // 邮箱更严格 validator.isEmail(ab, { allow_display_name: false }); // 是否数字 validator.isNumeric(123); // true validator.isInt(42); // true validator.isFloat(3.14); // true // 是否 URL slug / UUID validator.isSlug(hello-world); // true validator.isUUID(550e8400-e29b-41d4-a716-446655440000); // true2.2 字符串清洗// 转义 HTML防 XSS validator.escape(scriptalert(xss)/script); // lt;scriptgt;alert(quot;xssquot;)lt;#x2F;scriptgt; // 去除首尾空白 validator.trim( hello ); // hello // 规范化邮箱小写 validator.normalizeEmail(AliceExample.COM); // aliceexample.com // 去除 ASCII 控制字符0x00-0x1F const dirty hello
返回列表