Bảo mật debug và log trong WordPress là cân bằng giữa khả năng quan sát lỗi và nguy cơ để lộ thông tin nhạy cảm. Trên production, mục tiêu thường là ghi log khi cần nhưng không hiển thị lỗi trực tiếp cho người dùng, đồng thời kiểm soát nơi lưu, quyền truy cập và retention. Đây là một lớp trong hardening WordPress tổng thể, nơi logging cần đi cùng secret hygiene, access control và monitoring.
Ba constant dễ nhầm
| Constant | Vai trò |
|---|---|
WP_DEBUG |
Bật chế độ debug và tăng mức báo lỗi |
WP_DEBUG_DISPLAY |
Điều khiển việc hiển thị lỗi trong HTML |
WP_DEBUG_LOG |
Ghi lỗi ra file log khi WP_DEBUG được bật |
Vận hành debug và log an toàn trên production
Production nên tránh hiển thị lỗi ra frontend
Lỗi hiển thị trực tiếp có thể làm lộ path, tên plugin/theme, query hoặc thông tin cấu hình hữu ích cho attacker. Khi cần debug production có kiểm soát, có thể bật logging nhưng tắt display, sau đó tắt debug khi hoàn tất.
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
Đây là ví dụ cấu hình, không phải khuyến nghị bật debug lâu dài trên production.
Kiểm soát nơi lưu log
Mặc định WP_DEBUG_LOG=true có thể ghi vào wp-content/debug.log. Nếu log có thể chứa dữ liệu nhạy cảm, cần giới hạn quyền truy cập và cân nhắc đường dẫn khác phù hợp với hạ tầng. Không nên để log public hoặc indexable.
Retention và secret hygiene
- Không giữ log vô thời hạn nếu không có policy.
- Không ghi secret, token, password hoặc dữ liệu cá nhân không cần thiết.
- Không copy nguyên log nhạy cảm vào ticket/public chat.
- Rotate/xóa log theo retention sau khi incident hoặc debug hoàn tất.
Debug log khác security log
debug.log chủ yếu phục vụ lỗi PHP/WordPress, không phải hệ thống audit đầy đủ cho login, role change hay incident activity. Với security monitoring cần nguồn log phù hợp hơn cho từng use case; xem audit log WordPress cho admin activity.
Checklist sau khi debug
- Xác minh issue đã được tái hiện và ghi nhận.
- Tắt display nếu chưa tắt.
- Thu thập phần log cần thiết và sanitize.
- Đóng hoặc tắt debug khi không còn cần.
- Kiểm tra file log có còn public/readable ngoài ý muốn không.
- Ghi owner và retention.
Liên quan wp-config.php
Các constant debug thường nằm trong wp-config.php. Vì vậy mọi thay đổi cần đi cùng snapshot, rollback và secret hygiene. Xem bảo vệ wp-config.php, salts và secrets.
Nguồn kỹ thuật
Kết luận
Debug an toàn nghĩa là chỉ bật khi có nhu cầu, ưu tiên log thay vì display trên production, bảo vệ log khỏi truy cập ngoài ý muốn và tắt lại khi công việc kết thúc.
