Hướng dẫn sanitize nodejs - khử trùng nodejs

Tôi sử dụng yup để xác nhận. Nó là gói nhỏ hơn rất nhiều so với Joi. Tôi đã sử dụng yup ở cả phía trước và phụ trợ và tôi thường ném xác nhận của mình vào gói NPM được chia sẻ mà cả hai dự án mặt trước và dự phòng có thể có cùng một thư viện xác thực

npm install -S yup

sau đó

import * as yup from 'yup';

let schema = yup.object().shape({
  name: yup.string().required(),
  age: yup.number().required().positive().integer(),
  email: yup.string().email(),
  website: yup.string().url(),
  createdOn: yup.date().default(function () {
    return new Date();
  }),
});

// check validity
schema
  .isValid({
    name: 'jimmy',
    age: 24,
  })
  .then(function (valid) {
    valid; // => true
  });

Từ trang web của Yup:

Yup là một trình xây dựng lược đồ JavaScript để phân tích và xác nhận giá trị. Xác định một lược đồ, biến đổi một giá trị để khớp, xác nhận hình dạng của một giá trị hiện có hoặc cả hai. Lược đồ YUP cực kỳ biểu cảm và cho phép mô hình hóa phức tạp, xác nhận phụ thuộc lẫn nhau hoặc biến đổi giá trị.

API của YUP được truyền cảm hứng rất nhiều bởi Joi, nhưng Leaner và được xây dựng với xác thực phía khách hàng là trường hợp sử dụng chính. YUP tách các chức năng phân tích cú pháp và xác nhận thành các bước riêng biệt. cast () biến đổi dữ liệu trong khi xác thực kiểm tra xem đầu vào có hình dạng chính xác không. Mỗi người có thể được thực hiện cùng nhau (như xác thực biểu mẫu HTML) hoặc riêng biệt (chẳng hạn như dữ liệu đáng tin cậy từ API).

Bạn sẽ muốn tạo trình xác nhận của riêng mình cho các mục đặc biệt như khớp mật khẩu, v.v ... Điều này có thể được thực hiện bằng cách sử dụng Regex sau đó thêm chức năng vào yup như vậy:

let schema = string().matches(/(hi|bye)/);

Đặt tất cả các chức năng xác thực của bạn vào gói NPM được chia sẻ của bạn (bao gồm cả các loại TypeScript của bạn, v.v.). Các trường hợp mà nhóm Frontend của bạn không đồng bộ với các xác nhận trên phần phụ trợ bây giờ sẽ ít quan tâm hơn.

node-sanitize

Nhập thư viện vệ sinh cho Node.js

Bản tóm tắt

Thư viện này nhằm mục đích vệ sinh đầu vào của người dùng. Các ví dụ dưới đây cho thấy một số chất khử trùng được xây dựng. Bạn có thể tạo chất khử trùng tùy chỉnh của riêng bạn. Vui lòng tham khảo các bài kiểm tra để biết thêm ví dụ về cách sử dụng thư viện này.

Cài đặt

npm install --save sanitize

Bài kiểm tra

Cách sử dụng

var express = require('express');
var app = express();
app.use(require('sanitize').middleware);
app.get('/ping', function(req, res) {
	var param = req.queryInt('param');
	res.send('pong ' + (typeof param) + ' ' + param);
});
app.listen(8080);

Tài liệu

Vệ sinh đối tượng

vệ sinh.

Điều này sẽ loại bỏ tất cả các phím từ một đối tượng đơn giản không phải là String, Integer hoặc Boolean. Thật tuyệt vời khi vệ sinh các đối tượng trước khi chèn vào cơ sở dữ liệu.

Express Middleware

req.headerint (Headername: String): Integer

req.headerstring (headername: string): chuỗi

req.headerfloat (Headername: String): Float

req.headeremail (HeaderName: String): Chuỗi

req.headerpotyp

req.headeroneof (headername: string, mảng: mảng): chuỗi

Req.bodyint (BodyParam: String): Integer

req.bodystring (bodyparam: String): String

req.bodyfloat (bodyparam: string): float

req.bodyemail (bodyparam: string): chuỗi

Req.BodyPotype (BodyParam: String, Mẫu: Regexp): Chuỗi

req.bodyoneof (bodyname: String, mảng: mảng): chuỗi

Req.QueryInt (QueryParam: String): Integer

Req.QueryString (queryParam: String): Chuỗi

req.queryfloat (queryparam: String): float

req.QueryEmail (queryParam: String): String

req.QueryPotype (queryParam: String, mẫu: regexp): chuỗi

req.queryOf (queryName: String, mảng: mảng): chuỗi

req.paramint (paramname: string): số nguyên

req.paramString (paramName: string): chuỗi

req.paramfloat (paramname: string): float

req.paramemail (paramname: string): chuỗi

req.parampattern (paramname: chuỗi, mẫu: regexp): chuỗi

req.paramoneof (paramname: string, mảng: mảng): chuỗi