express-validate-input

#使用express-validator在Express中驗證輸入 了解如何驗證Express端點中的輸入數據。 假設你有一個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 }) 如何對這些結果進行服務器端驗證,以確保: name是一個至少3個字符的字符串嗎? email是一個真實的郵件地址嗎? age是一個介於0和110之間的數字嗎? 處理Express中從外部輸入的任何類型的驗證的最佳方法是使用express-validator套件: npm install express-validator 您需要從該套件中導入check和validationResult對象: const { check, validationResult } = require('express-validator'); 我們將check()調用的數組作為post()調用的第二個參數傳遞。每個check()調用接受參數名作為參數。然後,我們調用validationResult()來驗證是否有驗證錯誤。如果有,我們將錯誤返回給客戶端: app.post('/form', [ check('name').isLength({ min: 3 }), check('email').isEmail(), check('age').isNumeric() ], (req, res) => { const errors = validationResult(req) if (!errors.isEmpty()) { return res.status(422).json({ errors: errors....

在 Express 中使用 express-validator 进行输入消毒

您已经了解了如何验证从外部世界进入 Express 应用程序的输入。 当您运行面向公众的服务器时,您会很快明白一件事:永远不要相信输入。 即使您使用客户端代码对输入进行了消毒和确保人们无法输入奇怪的东西,您仍然可能受到人们使用工具(甚至仅仅是浏览器开发工具)直接POST到您的端点的影响。 或者机器人尝试使用人类已知的每种攻击方式的组合。 您需要做的是对输入进行消毒。 您已经使用的express-validator包 也可以方便地用于执行消毒操作。 假设您有一个POST端点接受name、email和age参数: 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....