Skip to content
youhoc
  • Pages
    • Home
    • Modern App Guidelines
    • Linux
      • Day 1: Linux Distributions & Navigation
      • Day 2: User Management
      • Day 3: File Permission & Ownership
      • Day 4: Package Management
      • Day 5: Services Management
    • Javascript
      • JS The Weird Part
        • Execution Context
        • Types & Operators
        • Objects & Functions
        • Error Handling & Strict Mode
        • Typescript, ES6, Tra
      • Modern JS
        • JS in the Browser
        • Data Storage JSON
        • Modern JS
        • Advanced Objects & Methods
        • Webpack & Babel
        • Async
      • jQuery
        • In-depth Analysis of jQuery
      • React-ready JS
        • Arrow Function
        • Template Literals
        • Logical AND, OR, Ternary, Nullish Operators
        • Destructuring & Rest Operator
        • Array Method
        • Immutability and Spread Operator
        • Promises, Async/Await, Callback
    • PHP
      • gruntJS
      • composer
      • MySQL
    • Docker
      • Container Basics
      • Container Networking
      • Container Image
      • Container Volume & Persistent Data
      • Dockerfile
      • Docker Compose
      • Docker Registry
    • Node.js
      • Installing & Exploring
      • Loading Modules
      • npm - Get Command Input
      • Web Server
        • Express Web Server
        • Template Engine & MVC
      • Authentication
      • 7. Databases
      • 8. Rest API
      • Errors
      • Sequelize
        • Sequelize Transactions: Đảm Bảo Tính Toàn Vẹn Dữ Liệu
        • 7 loại Data Types phổ biến Trong Sequelize
        • Phân Trang (Pagination) Trong Express.js Với Sequelize/MySQL
      • File Upload với Multer, Express.js
      • Hướng dẫn Cơ bản về Rest API
      • icon picker
        Server-Side Validation Với Express-Validator
      • Authentication Trong REST API Với JWT
    • ReactJS
      • React from Andrew
        • Summary from Next
        • 1. Basics
        • 2. React Components
        • 3. Webpack
        • 4. Styling with SCSS
        • 5. React Router
        • 6. React Hook
      • Modern React From The Beginning
        • Intro to JSX
        • Vite Build Tools
        • Basic Component Creation
        • Component State
        • Props & Component Composition
        • useState with Inputs & Form Submission
        • useEffect, useRef & Local Storage
        • Async / Await and Http Request in React
        • React Router: Declarative Mode
        • ContextAPI
        • React Router: Framework Mode
          • File-routing & HTML Layouts
          • Server-side Data Query
          • Links & Navigation
          • Loaders
    • Typescript
      • Type User vs UserProp
    • Payload CMS
    • Authentication

Server-Side Validation Với Express-Validator

image.png
Dựa trên diagram, validation có 2 tầng:
1. Client-Side Validation (Optional):
UX tốt hơn (feedback ngay lập tức)
Giảm tải server
NHƯNG: Dễ bypass (user tắt JavaScript, dùng Postman…)
2. Server-Side Validation (Required - BẮT BUỘC):
Bảo mật: Không thể bypass
Cuối cùng data vẫn phải qua server
Layer cuối trước khi vào Database
Nguyên tắc: LUÔN validate trên server, client-side chỉ là bonus cho UX!

1. Cài đặt Express-Validator

2. Import và sử dụng trong Routes

Basic Setup

3. Các loại validation phổ biến

String Validation

Password Validation

Number Validation

Length & Content Validation

Date Validation

Boolean & Checkbox

Array Validation

Custom Validation

4. Xử lý Validation Errors trong Controller

5. Ví dụ hoàn chỉnh: User Signup

Routes (routes/auth.js)

Controller (controllers/auth.js)

Frontend Response Handling

6. Best Practices

A. Tách Validation Rules ra file riêng

B. Tạo Error Handler Middleware

C. Sanitization - Làm sạch dữ liệu

D. Rate Limiting cho validation endpoints

E. Consistent Error Format

F. Custom Validator Functions

G. Validation cho File Uploads

Tóm tắt Best Practices

LUÔN validate trên server - client validation chỉ là UX bonus
Tách validation rules ra files riêng để reuse
Sanitize input (trim, escape, normalize) để tránh XSS
Consistent error format - dễ handle ở frontend
Custom validators cho business logic phức tạp
Async validation để check database (unique email, username…)
Rate limiting cho sensitive endpoints (signup, login)
Clear error messages - giúp user biết sửa gì
Validate arrays và nested objects nếu cần
Middleware pattern để reuse validation logic
Express-validator giúp validation trở nên dễ dàng, an toàn và maintainable!
Want to print your doc?
This is not the way.
Try clicking the ··· in the right corner or using a keyboard shortcut (
CtrlP
) instead.