Bảo mật truyền tải nghiêm ngặt HTTP (HTTP Strict Transport Security - HSTS) là một tiêu đề (header) phản hồi HTTP cho phép các trang Web thông báo cho trình duyệt Web chỉ nối qua HTTPS mà không dựa vào chuyển hướng HTTPS từ phía máy chủ. Khi trang Web HSTS được truy cập qua HTTP, trình duyệt biết rằng trang Web có HTTPS và chuyển hướng nội bộ đến HTTPS theo tiêu đề Strict-Transport-Security, điều này có nghĩa là không có HTTP nào được gửi đi.
Nếu không có HSTS, khách truy cập có thể giao tiếp với phiên bản HTTP (không được mã hóa) của trang Web, Ví dụ: trước khi chuyển hướng HTTPS, các yêu cầu HTTP ẩn, chẳng hạn như yêu cầu HTTP từ nội dung hỗn hợp. Điều này tạo cơ hội cho các cuộc tấn công MITM, ví dụ: SSL Strip cũng như các cuộc tấn công chiếm quyền điều khiển phiên (Session Hijacking).
Một số nghiên cứu đã chứng minh các tình huống mà kẻ tấn công có thể vượt qua cơ chế HSTS. HSTS được kích hoạt qua cấu hình tiêu đề phản hồi HTTP. Tiêu đề phải được đặt bằng phản hồi HTTPS vì nó sẽ bị trình duyệt bro qua khi trang Web được truy cập bằng HTTP. Điều này là do kẻ tấn công có thể chặn các kết nối HTTP và đưa tiêu đề vào hoặc xóa nó.
Cấu hình HSTS được đề xuất:
- Max-age: Thời gian tính bằng giây mà trình duyệt sẽ buộc trang Web chỉ được kết nối HTTPS. Đây phải là bất kỳ giá trị nguyên dương nào. Thời lượng này sẽ được cập nhật khi tiêu đề Strict-Transport-Security mới được gửi đến trình duyệt. Không có khuyến nghị chính thức nào cho khoảng thời gian của max-age. Tuy nhiên, thời lượng max-age dài hơn sẽ làm giảm số lượng kết nối HTTP. Thiết lập mặc định phổ biến nhất là trong khoảng thời gian một năm (max-age: 3156000).
- IncludeSubDomians: là một chỉ thị tiêu đề tùy chọn. HSTS được đặt dựa trên miền phụ và miền được tìm thấy trong URL của trang Web. Ví dụ: khi người dùng truy cập vào trang Web https://www.example.com/foo với HSTS được bật, HSTS được bật trên bất kỳ trang nào được truy cập qua www.example.com. Tuy nhiên, HSTS không được bật trên các trang tên miền cấp cao hơn (example.com) và các trang trên tên miền phụ, ví dụ: bar.www.example.com. Với chỉ thị includeSubdomains, trình duyệt sẽ bật HSTS trên tất cả các miền phụ bất kỳ trang nào trên *.www.example.com. IncludeSubdomains được khuyến nghị vì nó sẽ thực thi HTTPS bất kỳ trang nào trên miền phụ. Khi có thể, includeSubdomains nên được đặt ở cấp độ tên miền (ví dụ: example.com) để bảo vệ tất cả các trang trên tên miền.
- Preload: là một chỉ thị tiêu đề tùy chọn khác. Chỉ thị này hiển thị được duy trì bởi Google. Với chỉ thị tải trước, HSTS được tải trước trong trình duyệt. Do đó, các trang Web tải trước HSTS sẽ không bao giờ được kết nối với HTTP. Để triển khai chỉ thị này một cách chính xác, trang Web cần phải nằm trong danh sách tải trước bằng cách đáp ứng tất cả các yêu cầu gửi bảo gồm có chứng chỉ hợp lệ, chuyển hướng HTTPS, tất cả các miền phụ qua HTTPS và tiêu đề HSTS có max-age ít nhất một năm, includeSubdomains và preload.
Tài liệu tham khảo
1. S. Sivakorn, P. Sirawongphatsara and N. Rujiratanapat, "Web Encryption Analysis of Internet Banking Websites in Thailand," 2020 17th International Joint Conference on Computer Science and Software Engineering (JCSSE), 2020, pp. 139-144, doi: 10.1109/JCSSE49651.2020.9268302.
Web lưu trữ kiến thức cá nhân đã tham khảo và thấy hữu ích cho người đọc. Các bạn có thể đóng góp bài viết qua địa chỉ: dzokha1010@gmail.com