codecamp

Node.js 输入验证

1.1.1【必须】按类型进行数据校验

  • 所有程序外部输入的参数值,应进行数据校验。校验内容包括但不限于:数据长度、数据范围、数据类型与格式。校验不通过,应拒绝。

// bad:未进行输入验证
Router.get("/vulxss", (req, res) => {
    const { txt } = req.query;
    res.set("Content-Type", "text/html");
    res.send({
        data: txt,
    });
});


// good:按数据类型,进行输入验证
const Router = require("express").Router();
const validator = require("validator");


Router.get("/email_with_validator", (req, res) => {
    const txt = req.query.txt || "";
    if (validator.isEmail(txt)) {
        res.send({
            data: txt,
        });
    } else {
        res.send({ err: 1 });
    }
});

关联漏洞:纵深防护措施 - 安全性增强特性

Node.js 代码实现
Node.js 执行命令
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }