Tạo và kiểm tra security.txt
Tạo tệp security.txt hợp lệ theo RFC 9116 để các nhà nghiên cứu biết cách liên hệ với bạn, hoặc dán một tệp có sẵn để xem nó sai ở đâu. Đây là một bước chuẩn bị cho Đạo luật Khả năng chống chịu không gian mạng của EU.
Chạy hoàn toàn trong trình duyệt của bạn
Tạo security.txt
Kiểm tra security.txt
Công cụ chỉ kiểm tra nội dung theo RFC 9116. Công cụ không truy cập website của bạn (những gì bạn nhập không rời khỏi trang này, nên hãy dán nội dung tệp vào), không xác minh chữ ký OpenPGP và không thử xem một địa chỉ có hoạt động hay không. Đây là mẫu tham khảo, không phải tư vấn pháp lý.
Cách tạo và kiểm tra security.txt
- Nhập ít nhất một Contact (địa chỉ email, số điện thoại hoặc trang https://) và kiểm tra ngày Expires. Điền thêm các trường tùy chọn bạn muốn, chẳng hạn Policy và Preferred-Languages.
- Sao chép hoặc tải tệp xuống, rồi đăng tại
/.well-known/security.txttrên tên miền của bạn qua HTTPS, dưới dạng văn bản thuần. - Để kiểm tra một tệp có sẵn, hãy dán nội dung vào phần kiểm tra. Sửa các lỗi trước, sau đó xem các cảnh báo. Nhập địa chỉ nơi bạn đăng tệp để kiểm tra trường Canonical.
- Đặt lời nhắc trong lịch để gia hạn Expires trước khi ngày đó qua.
security.txt dùng để làm gì
Khi một nhà nghiên cứu, một khách hàng hay một CERT phát hiện điểm yếu trong phần mềm của bạn, vấn đề đầu tiên là báo cho ai. security.txt là một tệp văn bản nhỏ đặt ở địa chỉ cố định, /.well-known/security.txt, trả lời câu hỏi đó: một đầu mối liên hệ, một ngày hết hạn và tùy chọn là liên kết tới chính sách công bố lỗ hổng cùng một khóa công khai. RFC 9116 quy định định dạng này, và nhiều công cụ quét, nền tảng bug bounty và CERT quốc gia tìm tệp này trước khi tìm ở bất cứ đâu khác.
Với nhà cung cấp phần mềm tại EU, tệp này còn hỗ trợ các nghĩa vụ theo Đạo luật Khả năng chống chịu không gian mạng (Cyber Resilience Act, CRA): Phụ lục I yêu cầu có cách được công bố để người bên ngoài báo cáo lỗ hổng và có quy trình xử lý chúng. Quy định không nêu tên định dạng này, nhưng đây là cách thông dụng để công bố đầu mối liên hệ. Hướng dẫn báo cáo cho nhà cung cấp nhỏ trình bày phần thiết lập còn lại, kể cả mốc 24 giờ.
Các trường
Contact và Expires là bắt buộc. Contact có thể xuất hiện nhiều lần và phải là một URI: mailto:, tel: hoặc https:. Expires chỉ xuất hiện một lần, dưới dạng ngày giờ như 2027-12-31T23:59:59Z, và RFC 9116 đề nghị đặt cách hiện tại chưa tới một năm. Encryption, Acknowledgments, Policy, Hiring và Canonical là các liên kết tùy chọn, và mọi địa chỉ web đều phải dùng https. Preferred-Languages chỉ xuất hiện một lần và liệt kê các mã ngôn ngữ. Trường nào RFC không định nghĩa thì người đọc sẽ bỏ qua, nên công cụ báo chúng là cảnh báo: thường đó là lỗi gõ sai.
Mẹo
- Dùng hộp thư mà nhiều người cùng đọc, không dùng địa chỉ của riêng một người, và thử gửi thư tới đó để chắc chắn nó hoạt động.
- Soạn một chính sách công bố lỗ hổng bảo mật và liên kết tới nó bằng trường Policy.
- Hãy nắm rõ các thời hạn trước khi có báo cáo đầu tiên: đồng hồ sự cố 24 giờ của CRA biến thời điểm bạn biết sự việc thành các hạn chót cụ thể theo ngày giờ.
Câu hỏi thường gặp
Đạo luật Khả năng chống chịu không gian mạng (CRA) có bắt buộc phải có security.txt không?
Không. Quy định này yêu cầu nhà sản xuất có chính sách công bố lỗ hổng bảo mật có phối hợp và có cách được công bố để mọi người báo cáo lỗ hổng. Tệp security.txt là cách phổ biến để công bố đầu mối liên hệ đó và giới chuyên môn khuyến nghị dùng, nhưng quy định không nêu tên định dạng này. Xem hướng dẫn cho nhà cung cấp nhỏ.
Chính xác thì tôi đặt tệp ở đâu?
Tại https://your-domain/.well-known/security.txt, phục vụ qua HTTPS với kiểu nội dung text/plain; charset=utf-8. RFC 9116 cũng cho phép đặt thêm một bản ở /security.txt cho các hệ thống cũ. Hãy đăng tệp trên mọi tên miền hoặc tên miền phụ mà bạn muốn được áp dụng.
Expires nên đặt xa đến mức nào?
RFC 9116 quy định nên đặt cách hiện tại chưa tới một năm, để các nhà nghiên cứu tin rằng thông tin liên hệ luôn được cập nhật. Công cụ mặc định đặt ngay dưới một năm. Khi ngày này qua, người đọc được hướng dẫn bỏ qua tệp, nên hãy gia hạn kịp thời.
Tôi có phải ký tệp bằng PGP không?
Không, việc ký là tùy chọn nhưng được khuyến nghị. Tệp đã ký là một thông điệp ký dạng văn bản rõ OpenPGP, tạo bằng lệnh gpg --clearsign security.txt. Công cụ nhận ra định dạng đã ký và kiểm tra cấu trúc của nó, nhưng không thể xác minh chính chữ ký; hãy dùng gpg --verify để làm việc đó.
Vì sao công cụ không tự truy cập website của tôi?
Để giữ riêng tư cho bạn: trang chạy hoàn toàn trong trình duyệt và không gửi yêu cầu đến bất kỳ website nào khác. Hãy mở tệp trong một thẻ trình duyệt, sao chép nội dung và dán vào đây. Cách này còn cho biết khách truy cập thực sự nhận được gì.
Trường Canonical dùng để làm gì?
Nó liệt kê các địa chỉ nơi tệp được dự định phục vụ, để người đọc xác nhận một tệp tìm thấy ở địa chỉ nào đó đúng là thuộc về địa chỉ đó. Nếu bạn nhập địa chỉ nơi đăng tệp, công cụ sẽ kiểm tra xem có dòng Canonical nào khớp với địa chỉ ấy không.