Bỏ qua nội dung

Encrypt Payload

Phạm vi hệ thống

  • response payload encryptionyêu cầu hệ thống, không phải feature.
  • Thuật toán: AES-256-GCM (đối xứng), mã hoá body JSON của response.
  • Đây là lớp obfuscation / chống scraping phía client, là lớp BỔ SUNG trên HTTPS/TLS — KHÔNG thay thế TLS.
  • Server mã hoá response → browser tự giải mã bằng Web Crypto API.

Quy tắc một chiều

  • Chỉ mã hoá RESPONSE. Request từ client vẫn gửi plaintext (được bảo vệ bởi TLS).
  • Không có bước giải mã request phía server.
  • Mục tiêu là làm khó việc scrape/đọc body tự động, không phải bảo mật transport (đã do TLS đảm nhận).

Bật/tắt & cấu hình

Namespace cấu hình: app.security.response-encryption.*.

Thuộc tínhÝ nghĩaMặc địnhEnv
enabledBật/tắt mã hoá responsefalseRESPONSE_ENCRYPTION_ENABLED
keySecret base64 của đúng 32 byte (AES-256)rỗngRESPONSE_ENCRYPTION_KEY
versionVersion scheme ghi vào envelope1
include-pathsWhitelist Ant-pattern; rỗng = không mã hoá gìrỗngRESPONSE_ENCRYPTION_INCLUDE_PATHS

Validate key lúc khởi động (fail-fast)

  • Khi enabled=true, key được validate ngay khi khởi động: phải là base64 hợp lệ và decode ra đúng 32 byte.
  • Nếu key rỗng / sai base64 / không đúng 32 byte → app KHÔNG khởi động (fail-fast).
  • Khi enabled=false, key được phép để trống để dev/test boot mà không cần key thật.

Không lưu key thật, secret hay nội dung .env trong tài liệu này. Key chỉ được nạp qua biến môi trường ở môi trường thật.

Version scheme

  • version (mặc định 1) được ghi vào trường v của envelope.
  • Mục đích: hỗ trợ xoay key / đổi thuật toán trong tương lai mà không đổi cấu trúc response — client đọc v để chọn đúng cách giải mã.

Môi trường

Môi trườngTrạng thái
prodbật theo cấu hình (cần key 32 byte hợp lệ)
devmặc định tắt
testtắt (app.security.response-encryption.enabled=false)