Quay lại blog
Kiến thức cơ bản Đăng ngày 28.09.2026 Đọc trong 12 phút

Biểu mẫu liên hệ WordPress: danh sách kiểm tra bảo mật

Contact Form 7, WPForms, Gravity Forms, Ninja Forms hay Fluent Forms – tiện ích nào ít quan trọng hơn cách cấu hình và bảo trì. Sau đây là những điều cần kiểm tra và kiểm tra lại sau mỗi lần cập nhật.

Phần lớn website WordPress sử dụng một trong số ít tiện ích biểu mẫu: Contact Form 7, WPForms, Gravity Forms, Ninja Forms, Fluent Forms và một vài tiện ích khác. Bất kỳ tiện ích nào cũng có thể được vận hành an toàn hoặc để hoàn toàn không được bảo vệ. Sự khác biệt hiếm khi nằm ở chính tiện ích, mà ở cách thiết lập, các phần mở rộng đi kèm, cách thư rời khỏi máy chủ và điều gì xảy ra với tin nhắn sau khi đến nơi.

  • Luôn cập nhật tiện ích biểu mẫu cùng mọi phần mở rộng và xóa những tiện ích bạn không còn dùng.
  • Bật tính năng chống thư rác của tiện ích – trường honeypot, tích hợp CAPTCHA, Akismet khi phù hợp – và xác nhận rằng tính năng đó thực sự hoạt động.
  • Gửi thông báo qua SMTP có xác thực từ một địa chỉ thuộc tên miền của bạn.
  • Giới hạn loại và kích thước tệp tải lên, đồng thời ngăn việc liệt kê hoặc duyệt công khai các tệp đã tải lên.
  • Không để địa chỉ email của người nhận xuất hiện trên trang hoặc trong mã nguồn của trang.
  • Chỉ lưu những bản ghi bạn cần và chỉ trong thời gian cần thiết.
  • Thực hiện một lượt kiểm tra ngắn sau mỗi lần cập nhật WordPress, giao diện hoặc bất kỳ tiện ích nào.

Cập nhật: tiện ích biểu mẫu và mọi thành phần liên quan

Các tiện ích biểu mẫu là mục tiêu phổ biến vì chúng tiếp nhận dữ liệu từ bất kỳ ai trên internet. Bản vá bảo mật được cung cấp dưới dạng bản cập nhật thông thường, vì vậy hãy cập nhật kịp thời – và không chỉ tiện ích chính. Các phần mở rộng cho thanh toán, tải tệp lên, kết nối CRM, logic có điều kiện hoặc nhà cung cấp CAPTCHA bổ sung là những phần mã riêng, có lỗ hổng riêng. Các tiện ích bạn từng cài để thử rồi quên cũng vậy. Chỉ vô hiệu hóa là chưa đủ: các tiện ích đã vô hiệu hóa vẫn nằm trên máy chủ và trong một số trường hợp, tệp của chúng vẫn có thể được truy cập trực tiếp. Nếu không sử dụng, hãy xóa.

Chống thư rác: bật lên rồi xác minh hiệu quả

Hầu hết tiện ích biểu mẫu có tùy chọn chống thư rác riêng hoặc tích hợp dịch vụ bên ngoài: trường honeypot mà bot điền vào còn người dùng không nhìn thấy, CAPTCHA như reCAPTCHA, hCaptcha hoặc Cloudflare Turnstile, và Akismet, dịch vụ đối chiếu nội dung tin nhắn với cơ sở dữ liệu thư rác. Tùy chọn khác nhau theo tiện ích và phiên bản, vì vậy hãy kiểm tra phần thiết lập thay vì mặc định cho rằng đã có. CAPTCHA bên ngoài tải tập lệnh từ bên thứ ba, còn Akismet gửi nội dung đã gửi đến dịch vụ bên ngoài – cả hai đều cần được nêu trong chính sách quyền riêng tư và, tùy cấu hình, trong hệ thống quản lý sự đồng ý của bạn.

Vấn đề thường gặp hơn là tính năng bảo vệ đã bật nhưng không hoạt động. CAPTCHA chạy bằng khóa thử nghiệm công khai cho mọi thứ đi qua. Một widget có tập lệnh bị chặn bởi tiện ích lưu bộ nhớ đệm hoặc tối ưu hóa, hay bởi lỗi JavaScript, sẽ không chặn được gì. Trường honeypot thiếu kiểu định dạng để ẩn sẽ bị trình đọc màn hình đọc lên và người truy cập thật điền vào. Vì vậy, sau mọi thay đổi, hãy mở biểu mẫu trong cửa sổ riêng tư, kiểm tra bảng điều khiển trình duyệt và mã nguồn trang, rồi gửi một tin nhắn thử. Nếu bạn muốn tính năng bảo vệ không phụ thuộc vào Google, tiện ích WordPress miễn phí của formexposed bổ sung trường honeypot, kiểm tra thời gian và bằng chứng công việc, đồng thời kiểm tra lại website sau khi cập nhật tiện ích – đây là một lựa chọn trong số nhiều lựa chọn.

Thư: được gửi như thế nào và đến đâu

Theo mặc định, WordPress chuyển thư cho hàm gửi thư PHP của máy chủ; trên nhiều dịch vụ lưu trữ, các thư này được xác thực kém và rơi vào thư rác – hoặc biến mất mà không có thông báo. Thay vào đó, hãy gửi qua tiện ích SMTP hoặc dịch vụ thư của nhà cung cấp lưu trữ, dùng hộp thư thật với tên người dùng và mật khẩu cùng địa chỉ người gửi thuộc tên miền của bạn, chẳng hạn địa chỉ forms@ dành riêng. Các bản ghi SPF, DKIM và DMARC của tên miền phải bao quát người gửi này. Đừng đặt địa chỉ của người truy cập vào trường From: đó không phải tên miền của bạn, nên thư không thể đáp ứng yêu cầu căn chỉnh DMARC và, tùy chính sách tên miền của người truy cập, sẽ rơi vào thư rác hoặc bị từ chối. Hãy đặt địa chỉ đó làm Reply-To; bạn vẫn có thể trả lời chỉ bằng một lần nhấp.

Địa chỉ người nhận phải nằm trong phần thiết lập tiện ích, không phải trên trang. Hãy kiểm tra mã nguồn trang liên hệ: một liên kết mailto cạnh biểu mẫu hoặc một trường ẩn chứa địa chỉ người nhận sẽ trao địa chỉ đó cho mọi bot thu thập địa chỉ. Ở các biểu mẫu cũ hoặc tự xây dựng, hậu quả có thể nghiêm trọng hơn – nếu máy chủ tin tưởng trường người nhận ẩn, bất kỳ ai cũng có thể sửa trường đó và dùng biểu mẫu của bạn để gửi thư đến địa chỉ tùy ý.

Tải tệp lên và bản ghi đã lưu

Tải tệp lên là tính năng rủi ro nhất của biểu mẫu, vì vậy trước hết hãy cân nhắc xem bạn có thực sự cần hay không. Nếu cần, chỉ cho phép những loại tệp bạn thực sự dự kiến nhận – chẳng hạn PDF và các định dạng ảnh phổ biến – thay vì chỉ chặn một vài loại nguy hiểm, đồng thời đặt giới hạn kích thước. Kiểm tra nơi tiện ích lưu tệp tải lên: không được để tệp bị liệt kê trong thư mục công khai và lý tưởng nhất là hoàn toàn không thể truy cập qua địa chỉ dễ đoán. Hãy xóa tệp sau khi xử lý xong hoặc gửi dưới dạng tệp đính kèm thay vì giữ trên máy chủ.

Nhiều tiện ích biểu mẫu hoặc phần mở rộng của chúng lưu mỗi lần gửi trong cơ sở dữ liệu WordPress, thường bao gồm cả thư rác. Đây là bản dự phòng hữu ích khi gửi thư thất bại, nhưng cũng là một khối dữ liệu cá nhân ngày càng lớn. Theo nguyên tắc giới hạn lưu trữ của GDPR (Điều 5(1)(e)), dữ liệu này không nên được giữ lâu hơn mức cần thiết. Hãy quyết định xem bạn có cần lưu bản ghi hay không, cần những trường nào và trong bao lâu, rồi sử dụng thiết lập tự động xóa của tiện ích nếu có hoặc thường xuyên xóa bản ghi cũ. Bản sao lưu cơ sở dữ liệu cũng chứa cùng dữ liệu đó.

Sau mỗi lần cập nhật

  1. 1Mở trang liên hệ trong cửa sổ riêng tư: biểu mẫu và thành phần chống thư rác hiển thị đúng, bảng điều khiển trình duyệt không có lỗi.
  2. 2Xem mã nguồn trang: trường honeypot và tập lệnh CAPTCHA vẫn còn, còn địa chỉ người nhận thì không xuất hiện.
  3. 3Gửi một tin nhắn thử: thư đến hộp thư đến, không vào thư rác, và phần đầu thư cho thấy SPF, DKIM và DMARC đều đạt.
  4. 4Kiểm tra các thiết lập quan trọng: người nhận, địa chỉ người gửi, loại và kích thước tệp được phép tải lên, thời gian lưu bản ghi.
  5. 5Kiểm tra rằng liên kết chính sách quyền riêng tư và mọi nội dung xin sự đồng ý vẫn hiển thị tại biểu mẫu.
  6. 6Ghi lại ngày và những gì bạn đã kiểm tra để biết lần gần nhất biểu mẫu được chứng minh là hoạt động bình thường.

Khi đã trở thành thói quen, việc này tốn ít thời gian và phát hiện đúng những lỗi âm thầm vốn có thể không được chú ý suốt nhiều tuần. Để có góc nhìn từ bên ngoài, lượt kiểm tra miễn phí trên formexposed.com xem xét các trang biểu mẫu công khai của website mà không gửi bất kỳ nội dung nào và cho biết liệu tính năng bảo vệ bạn mong đợi có hiện diện và được cấu hình hiệu quả hay không – không cần tài khoản.