wp-config.php chứa thông tin kết nối database, secret keys và các hằng số điều khiển hành vi WordPress. Sau một sự cố, gia cố tệp này không phải là thêm thật nhiều đoạn mã trên mạng mà là kiểm tra bí mật, quyền đọc, vị trí, lịch sử thay đổi và tác động của từng cấu hình.
Sao lưu và kiểm thử trước. Một hằng số sai có thể làm website mất cập nhật, lỗi cache hoặc không truy cập được; hardening chỉ có giá trị khi hệ thống vẫn vận hành được.
Rà bí mật và thông tin kết nối
Nếu có khả năng tệp đã bị đọc, hãy thay mật khẩu database và cập nhật cấu hình theo một cửa sổ thay đổi có rollback. Rà API key hoặc token bị hardcode bởi code tùy biến. Không gửi nguyên tệp qua email/chat vì nó có thể chứa credential thật.
Thay security keys và salts
Thay keys/salts giúp vô hiệu hóa cookie đăng nhập hiện có. Đây là bước phù hợp sau xâm nhập, nhưng sẽ đăng xuất toàn bộ người dùng. Cần thông báo cho đội vận hành, thực hiện qua kết nối an toàn và xác minh đăng nhập lại.
Tắt trình sửa file trong Dashboard
define( 'DISALLOW_FILE_EDIT', true );Thiết lập này loại bỏ quyền sửa plugin/theme trực tiếp trong Dashboard, giảm một đường thực thi mã khi tài khoản quản trị bị chiếm. Nó không ngăn upload tệp độc hoặc sửa qua SSH/SFTP, nên chỉ là một lớp containment.
Có nên dùng DISALLOW_FILE_MODS?
DISALLOW_FILE_MODS chặn cài đặt/cập nhật plugin, theme và core từ Dashboard. Chỉ phù hợp khi tổ chức có quy trình deploy khác và vẫn bảo đảm bản vá được đưa lên kịp thời. Bật mà không có pipeline cập nhật có thể khiến website giữ phiên bản dễ tổn thương lâu hơn.
Quyền đọc và vị trí wp-config.php
WordPress có thể đọc wp-config.php ở một cấp phía trên thư mục cài đặt trong một số mô hình. Tuy nhiên việc di chuyển không tự động tạo bảo mật và có thể gây lỗi với cấu trúc hosting. Điều quan trọng hơn là owner/quyền phù hợp để chỉ tài khoản cần thiết và PHP đọc được. WordPress nêu 400/440 như ví dụ cho một số hệ thống, nhưng cấu hình thực tế phụ thuộc user chạy PHP.
Debug log trên production
Không để lỗi và đường dẫn hệ thống hiển thị cho khách. Nếu cần log để điều tra, ghi vào nơi được bảo vệ, giới hạn thời gian và kiểm soát dữ liệu nhạy cảm. Tắt hoặc điều chỉnh sau khi hoàn thành chẩn đoán.
Mỗi hosting, cache, staging và quy trình cập nhật khác nhau. Ghi rõ mục tiêu của từng hằng số và cách rollback trước khi áp dụng.
Nguồn tham khảo chính thức
Xem phần Securing wp-config.php và Editing Files trong WordPress Advanced Administration Handbook.
Một file nhỏ có thể chứa chìa khóa của cả website
wp-config.php không chỉ có thông tin database. Nó có salts, debug setting, prefix, đường dẫn và đôi khi cả secret do plugin thêm vào. Khi file bị lộ hoặc bị sửa, attacker có thể đọc dữ liệu, duy trì phiên hoặc bật hành vi phục vụ cho backdoor.
WebAnToan từng gặp website đổi mật khẩu admin nhiều lần nhưng vẫn bị quay lại vì credential database và secret tích hợp chưa được xoay. Đội ngũ chỉ nhìn vào wp-admin trong khi chiếc chìa khóa thật nằm ở cấu hình.
Đừng sao chép một đoạn hardening rồi dán mù quáng
Di chuyển file, đổi permission hoặc tắt editor phải phù hợp owner và cách deploy. Một permission quá chặt có thể làm update thất bại; quá rộng lại cho web server sửa cấu hình. Trước khi thay đổi, ghi lại owner, group, process PHP và đường rollback.
Sau sự cố cần rà những gì trong cấu hình?
- Secret và credential nào đã có khả năng bị đọc.
- Constant lạ, include ngoài dự kiến hoặc code chèn trước phần WordPress.
- Debug log có đang public hoặc ghi dữ liệu nhạy cảm không.
- File có nằm trong backup, repository hay ticket hỗ trợ không.
- Ai và quy trình nào được phép thay đổi cấu hình về sau.
Hardening tốt khiến thay đổi trái phép khó xảy ra và dễ bị phát hiện, đồng thời vẫn giữ được đường triển khai hợp lệ cho đội vận hành.
Secret phải được xoay theo phạm vi
Nếu wp-config từng bị đọc, đổi riêng password WordPress không đủ. Rà database credential, salts, SMTP, API key và secret plugin; lên thứ tự xoay để website không bị gián đoạn và ghi lại hệ thống phụ thuộc.
Cụm gia cố WordPress sau phục hồi
Hoàn thiện cấu hình, quyền, danh tính và lớp phòng thủ theo một lộ trình có kiểm thử.
Câu hỏi thường gặp
Có nên đưa wp-config.php ra ngoài web root không?
Chỉ khi cấu trúc hosting hỗ trợ và đã kiểm thử; quyền đọc và owner đúng thường quan trọng hơn việc di chuyển đơn thuần.
DISALLOW_FILE_EDIT có ngăn mọi upload mã độc không?
Không. Nó chỉ tắt trình sửa plugin/theme trong Dashboard và là một lớp containment.
Thay salts có ảnh hưởng người dùng không?
Có. Cookie đăng nhập hiện tại sẽ mất hiệu lực và người dùng phải đăng nhập lại.
Cần rà cấu hình bảo mật theo website thực tế?
WebAnToan có thể kiểm tra cấu hình, quyền, tài khoản và lớp phòng thủ mà không làm gián đoạn nghiệp vụ.



