Sau khi xóa malware hoặc khôi phục website bị hack, đừng chỉ kiểm tra xem trang chủ đã mở lại hay chưa. Điều quan trọng hơn là xác nhận website đã đủ an toàn để đưa trở lại vận hành hay chưa.
Một website có thể hoạt động bình thường nhưng vẫn còn tài khoản lạ, backdoor, cron độc hại, mã chèn trong database, API key bị lộ hoặc đường xâm nhập cũ chưa được đóng. Checklist này giúp kiểm tra từng lớp trước khi quyết định mở lại website.
Phạm vi bài này: dùng sau khi bước containment và cleanup đã được thực hiện. Nếu website vẫn đang bị tấn công hoặc chưa làm sạch, bắt đầu từ quy trình xử lý website bị hack.
Khi nào có thể coi website đã “đủ sạch” để vận hành lại?
Không có một dấu hiệu đơn lẻ nào chứng minh website đã an toàn. Scanner báo “clean” là tín hiệu tốt, nhưng vẫn cần kiểm tra file, tài khoản, database, cron, credential, DNS, chức năng website và log sau phục hồi.
Cách dễ hiểu nhất là trả lời 3 câu hỏi: mã độc đã được loại bỏ chưa, đường xâm nhập đã được đóng chưa và website có hoạt động bình thường sau khi xử lý không?
Checklist 10 bước trước khi mở lại website
1. Xác nhận những gì đã được kiểm tra
- Biết file, database, user, plugin, theme và hosting nào đã được rà.
- Có danh sách những thay đổi đã thực hiện trong quá trình cleanup.
- Biết phần nào chưa được kiểm tra hoặc còn nghi ngờ.
“Đã xóa file malware” không đồng nghĩa “đã kiểm tra toàn bộ website”. Phải biết rõ phạm vi đã làm sạch.
2. Kiểm tra còn backdoor hoặc file bất thường không
So sánh WordPress core, plugin và theme với nguồn tin cậy khi có thể. Rà file mới hoặc bị sửa bất thường, mu-plugin, file PHP trong uploads và các vị trí thường bị lợi dụng để duy trì truy cập.
Xem thêm cách phát hiện backdoor WordPress.
3. Kiểm tra tài khoản và quyền truy cập
- Không còn admin hoặc user không rõ nguồn gốc.
- Tài khoản hợp lệ chỉ giữ đúng quyền cần thiết.
- Rà cả WordPress, hosting, SFTP/SSH, database, CDN/DNS và dịch vụ tích hợp quan trọng.
4. Đổi những mật khẩu, API key và token có nguy cơ đã lộ
Nếu kẻ tấn công có thể đã truy cập credential trong thời gian website bị compromise, cần đổi hoặc thu hồi các khóa liên quan: mật khẩu admin, hosting, database, API key, token và webhook secret.
Không nên đổi hàng loạt mà không biết dependency. Hãy xác định secret nào đang được plugin, cron hoặc integration sử dụng để tránh làm hỏng website sau cleanup.
5. Kiểm tra database và nội dung bị chèn
Malware không chỉ nằm trong file. Cần rà user, option, nội dung chèn, JavaScript lạ, redirect, SEO spam và các thay đổi bất thường trong database.
6. Kiểm tra cron, scheduled task và automation
Một cron job hoặc webhook độc hại có thể tạo lại file, user hoặc redirect sau khi bạn vừa xóa chúng. Vì vậy cần rà WordPress cron, cron của hosting và các job tự động quan trọng.
7. Đóng đường xâm nhập đã biết
Nếu đã xác định plugin, credential hoặc cấu hình là nguyên nhân, phải xử lý đường đó trước khi mở lại: cập nhật, vô hiệu hóa, đổi credential, thu hồi quyền hoặc áp dụng biện pháp giảm thiểu phù hợp.
Nếu chưa xác định chắc nguyên nhân, không nên tuyên bố website đã an toàn hoàn toàn. Hãy ghi rõ phần còn chưa chắc chắn và tăng monitoring sau khi khôi phục.
8. Kiểm tra website có hoạt động đúng không
- Trang chủ và các trang quan trọng mở bình thường.
- Form, login, checkout hoặc chức năng chính hoạt động đúng.
- Không còn redirect ngoài ý muốn.
- Canonical, robots/noindex và nội dung SEO quan trọng không bị thay đổi lạ.
- Không còn script hoặc link lạ trong HTML render của các trang mẫu.
9. Theo dõi log và cảnh báo sau phục hồi
Sau khi mở lại, tiếp tục theo dõi login, file change, WAF/CDN, malware alert và những tín hiệu đã xuất hiện trong sự cố. Nếu dấu hiệu cũ quay lại, cần cô lập và điều tra tiếp thay vì coi cleanup đã hoàn tất.
Xem Website Security Monitoring.
10. Chốt quyết định mở lại hay chưa
Trước khi mở lại đầy đủ, ghi rõ ai quyết định, các kiểm tra đã hoàn thành, phần còn chưa chắc chắn, rủi ro còn lại và điều kiện phải cô lập website lần nữa nếu dấu hiệu xấu xuất hiện.
Bảng quyết định nhanh
| Trạng thái | Khi nào áp dụng? |
|---|---|
| GO | Các kiểm tra chính đã hoàn tất, đường xâm nhập đã biết được xử lý hoặc giảm thiểu và monitoring đã sẵn sàng. |
| GO có điều kiện | Còn vấn đề đã biết nhưng mức rủi ro đã được đánh giá, có người chịu trách nhiệm và kế hoạch xử lý rõ. |
| NO-GO | Vẫn còn backdoor, tài khoản lạ, redirect, mã chèn, credential chưa kiểm soát hoặc chưa biết phạm vi cleanup. |
Ví dụ: trang chủ đã mở lại nhưng vẫn chưa nên GO
Website đã tải bình thường và scanner không còn báo malware, nhưng vẫn phát hiện một tài khoản admin không rõ nguồn gốc và chưa đổi API key từng nằm trong file cấu hình bị truy cập. Trường hợp này vẫn nên coi là NO-GO vì quyền truy cập trái phép và credential có nguy cơ chưa được xử lý.
Sau khi website hoạt động lại
Sự cố chưa kết thúc ngay khi traffic được mở lại. Cần tiếp tục monitoring, hoàn thành việc đổi credential, xử lý các điểm yếu còn lại và cập nhật quy trình để giảm nguy cơ tái diễn.
Nếu cần đưa việc này thành quy trình vận hành lặp lại, xem Website Security Operations.
Nếu website vẫn còn dấu hiệu malware, backdoor hoặc redirect, xem website nhiễm malware/backdoor và chỉ quay lại checklist này sau khi cleanup đã được thực hiện.
Đoàn Trình Dục là Giảng viên Khoa Công nghệ Thông tin tại Đại học Công nghệ Sài Gòn (STU), với hơn 10 năm kinh nghiệm thực chiến trong các lĩnh vực Mạng máy tính, Marketing Online, SEO và Bảo mật hệ thống.
Với nền tảng sư phạm và kinh nghiệm tư vấn cho nhiều doanh nghiệp, thầy chuyên sâu vào việc xây dựng các giải pháp kỹ thuật số toàn diện và hiệu quả.

