Bảo mật

Tài liệu này cung cấp thông tin về mật khẩu, xác thực, cấu hình SSL, phân tách mạng, mã hóa kết nối, phần đầu HTTP và giao thức TLS trên máy chủ web liên quan đến ứng dụng API WhatsApp Business.

Mật khẩu và xác thực

Vui lòng tham khảo tài liệu về Đăng nhập và xác thực để biết thêm thông tin về mã xác thựccách làm tốt nhất đối với mật khẩu.

Cấu hình SSL

Để truy cập vào ứng dụng API WhatsApp Business, cần phải có HTTPS.

Theo mặc định, Ứng dụng API WhatsApp Business sẽ tạo chứng chỉ tự ký khi được tạo. Có thể bạn sẽ phải sử dụng chứng chỉ của Cơ quan chứng thực (CA) (dùng cho việc tạo chứng chỉ tự ký) để xác minh điểm cuối Ứng dụng API WhatsApp Business và tránh cảnh báo về mức độ tin cậy của chứng chỉ. Ngoài ra, bạn có thể tải chứng chỉ CA lên thay vì chứng chỉ tự ký. Xem tài liệu về Chứng chỉ CA để biết thêm thông tin.

Vì Webhooks cũng cần có HTTPS để thực hiện lệnh gọi lại, nên bạn có thể dùng chứng chỉ CA của riêng mình để tránh tình trạng ứng dụng bị lỗi SSL khi tìm cách POST lên Webhook đã cấu hình. Hãy xem Tài liệu về Chứng chỉ CA cho Webhooks để biết thêm thông tin.

Phân tách mạng

Bạn nên lưu trữ các nút Webapp và Coreapp trong mạng riêng đã phân tách, đồng thời chỉ hiển thị với những dịch vụ bắt buộc.

Nút Webapp chỉ nên hiển thị điểm cuối Quản trị web và API với những mạng lưu trữ ứng dụng API WhatsApp Business và trạm làm việc dành cho nhân viên quản lý.

Nút Coreapp chỉ nên hiển thị dịch vụ kết nối với nút Webapp, còn trong quy trình thiết lập Đa kết nối thì chỉ nên hiển thị dịch vụ điều khiển với các nút Coreapp khác.

Mã hóa kết nối

Kết nối giữa Webapp và Coreapp

Bạn nên thiết lập biến môi trường WA_SECRET ở cả vùng chứa Coreapp và Webapp để đảm bảo rằng kết nối giữa hai vùng chứa này được mã hóa.

Lưu ý: Máy chủ Coreapp và Webapp cần đồng bộ đồng hồ để tính năng mã hóa hoạt động chính xác. Trong trường hợp thời gian trôi, bảo vệ chống tấn công nhiều lần (nghĩa là cứ 10 giây lại kiểm tra nhãn thời gian) có thể dẫn đến lỗi kết nối.

Kết nối với cơ sở dữ liệu

Bạn có thể cấu hình thông số SSL dùng để mã hóa kết nối với cơ sở dữ liệu nhằm bảo vệ dữ liệu trong khi truyền.

Trước đây, chỉ có thể mã hóa kết nối giữa Coreapp và cơ sở dữ liệu bằng biến môi trường WA_DB_CONNECTION_OPTION, bởi vì thông thường chỉ Coreapp có quyền truy cập vào cơ sở dữ liệu. Tuy nhiên, giờ thì vùng chứa Webapp cũng có quyền truy cập vào cơ sở dữ liệu, nên cần phải mã hóa kết nối giữa Webapp và cơ sở dữ liệu. Do vậy, SSL được thay đổi cấu hình để trở thành điểm trung tâm cho mọi vùng chứa truy cập. Có thể cấu hình mã hóa bằng các biến môi trường sau đây:

  • WA_DB_SSL_KEY
  • WA_DB_SSL_CERT
  • WA_DB_SSL_CA
  • WA_DB_SSL_VERIFY

WA_DB_SSL_VERIFY có thể cấu hình để xác minh hoặc không xác minh thông tin nhận dạng máy chủ. Bạn phải dùng biến này khi thiết lập một số quy trình phát triển nội bộ nhất định và không nên tắt tính năng xác minh. Nếu bạn không đặt thông số này thì tính năng xác minh sẽ được bật theo mặc định. Để tắt tính năng xác minh, hãy sử dụng:

WA_DB_SSL_VERIFY=0

Lưu ý: Biến WA_DB_SSL_VERIFYchỉ dùng được cho Webapp.

Đối với trường hợp tương thích ngược, WA_DB_CONNECTION_OPTION vẫn được hỗ trợ ở chế độ cũ và dùng để mã hóa kết nối giữa Coreapp và cơ sở dữ liệu. Bạn nên chuyển sang các thông số mới này.

Tất cả các file cấu hình bằng biến môi trường Key, Cert và CA đều phải truy cập được trong vùng chứa. Để làm được điều này, bạn có thể tạo thư mục certs trong phần dữ liệu với các quyền thích hợp. Đường dẫn đến phần dữ liệu thường là /usr/local/waent/data và khi đó sẽ truy cập được vào thư mục chứng chỉ tại /usr/local/waent/data/certs trong vùng chứa.

Máy chủ web (TLS)

Mật mã và giao thức TLS đã được cấu hình theo Cấu hình Mozilla khuyến nghị. Webapp hỗ trợ 3 cấu hình: HIỆN ĐẠI (mặc định), TRUNG GIAN và CŨ.

Bạn nên dùng cấu hình mặc định để tăng cường bảo mật. Tuy nhiên, bạn có thể chọn hạ cấp cấu hình bằng biến môi trường WA_WEB_SECURITY_LEVEL.

Phần đầu HTTP

Các phần đầu HTTP sau đây được hỗ trợ cho trang Quản trị web (chứ không cho điểm cuối API) và tùy vào trình duyệt đang sử dụng.

TênMô tả

X-Content-Security-policy

Xác định chính sách chỉ cho phép những tập lệnh từ cùng một miền chạy trên trang Quản trị web

X-Frame-Options

Phần đầu không cho phép bất kỳ miền nào thêm trang Quản trị web làm iframe

X-XSS

Phần đầu bảo vệ giúp trang Quản trị web an toàn trước các cuộc tấn công chèn mã độc trên trang web bằng cách xóa sạch thông tin đã nhập nếu phát hiện tấn công

X-Content-Type-Options

Đảm bảo máy chủ nhận được loại nội dung đúng như đã yêu cầu

Strict-Transport-Security

Đảm bảo trang Quản trị web chỉ có thể truy cập được qua HTTPS