HSTS là một tiêu đề phản hồi bảo mật web. Tên này là từ viết tắt của “HTTP Nghiêm ngặt về Bảo mật Giao thông Vận tải”. Chức năng của tiêu đề HSTS là buộc các trình duyệt kết nối với các trang web sử dụng HTTPS.
Mẹo: HTTPS sử dụng mã hóa để bảo mật kết nối web của bạn khỏi tin tặc đang cố gắng sửa đổi hoặc giám sát nó. HTTP không có những biện pháp bảo vệ này và do đó, một tin tặc ở đúng nơi có thể theo dõi và sửa đổi lưu lượng HTTP của bạn.
Tiêu đề phản hồi web là một phần siêu dữ liệu được gửi bởi máy chủ khi nó phản hồi các yêu cầu web. Một tập hợp con của các tiêu đề này thường được gọi là tiêu đề bảo mật vì mục đích của chúng là tăng tính bảo mật của trang web và người dùng.
Tiêu đề HSTS có hai phần bắt buộc và hai phần tùy chọn. Tên tiêu đề “Nghiêm ngặt-Vận chuyển-Bảo mật”, sau đó là toán tử và giá trị “max-age” đều là bắt buộc. Một cặp toán tử khác, “includeSubDomains” và “tải trước” đôi khi cũng được sử dụng.
Khi trình duyệt nhận được phản hồi HTTPS với tiêu đề HSTS, trình duyệt sẽ được hướng dẫn kết nối với trang web này và tất cả các tài nguyên trên đó, chỉ sử dụng HTTPS trong khoảng thời gian của bộ đếm thời gian "max-age". “Độ tuổi tối đa” là một biến mô tả thời gian một cài đặt phải được trình duyệt ghi nhớ. Giá trị của "max-age" được liệt kê bằng giây, giá trị được đề xuất là "31536000", là một năm.
Ý tưởng là trong khoảng thời gian của bộ đếm thời gian này, được đặt lại với mỗi lần tải trang tiếp theo, trình duyệt sẽ yêu cầu kết nối HTTPS và từ chối bất kỳ tài nguyên HTTP nào. Điều này bảo vệ chống lại các cuộc tấn công người trung gian, nơi mà một hacker giữa bạn và máy chủ web có thể thao túng các phản hồi mà bạn nhận được.
Điểm chính mà điều này bảo vệ bạn là kết nối đầu tiên. Thông thường, khi bạn kết nối với một trang web, bạn có thể yêu cầu trang web HTTP, sau đó được chuyển tiếp đến trang web HTTPS. Thật không may, một tin tặc ở vị trí trung gian có thể ngăn cản việc nâng cấp lên HTTPS này và sau đó có thể đánh cắp hoặc theo dõi hoạt động của bạn trên trang web. Tuy nhiên, khi tiêu đề HSTS đã được trình duyệt nhìn thấy, trình duyệt của bạn sẽ thực hiện ngay cả kết nối đầu tiên qua HTTPS, bảo vệ bạn khỏi tin tặc.
HSTS cũng ngăn không cho tải bất kỳ tài nguyên không an toàn nào cũng có thể bị kẻ tấn công sửa đổi một cách ác ý nếu chúng được phân phối qua HTTP.
Toán tử "includeSubDomains" được sử dụng để chỉ ra rằng tiêu đề cũng phải áp dụng cho tất cả các miền phụ của trang web.
Danh sách tải trước HSTS
Bạn có thể nhận thấy rằng HSTS vẫn không bảo vệ bạn ngay lần đầu tiên bạn kết nối với một trang web. Đây là nơi toán tử “tải trước” xuất hiện. Các trang web có thể tự đưa chúng vào danh sách tải trước HSTS, toán tử “tải trước” là chỉ báo bắt buộc nếu trường hợp này xảy ra. Danh sách tải trước HSTS thường xuyên được cập nhật và lưu trữ trong trình duyệt, nếu một trang web được bao gồm trong đó thì trình duyệt sẽ áp dụng các biện pháp bảo vệ HSTS cho nó. Điều này xảy ra ngay cả trên kết nối đầu tiên trước khi trình duyệt có thể nhìn thấy tiêu đề phản hồi HSTS.
Mẹo: Cần phải thêm "tuổi tối đa" từ một năm trở lên vào danh sách tải trước HSTS.
Vấn đề với HSTS
Một trong những điểm chính của HSTS là nó hiển thị thông báo lỗi nếu có bất kỳ vấn đề nào với kết nối HTTPS. Như một biện pháp phòng ngừa bảo mật bổ sung, người dùng không được phép bỏ qua thông báo lỗi HSTS, vì họ có thể làm được với các lỗi HTTPS thông thường.
Thật không may, điều này có thể gây ra sự cố nếu một công ty triển khai HSTS trước toàn bộ trang web và mọi tài nguyên được sử dụng trên đó đều hỗ trợ HTTPS. Trong trường hợp này, người dùng sẽ bắt đầu thấy các thông báo lỗi bảo mật HSTS mà họ không thể bỏ qua, về cơ bản là phá vỡ hoàn toàn trang web. Điều tồi tệ nhất là, việc chỉ xóa tiêu đề HSTS không khắc phục được sự cố cho những người dùng đó, vì trình duyệt của họ sẽ tiếp tục thực thi HSTS trong “độ tuổi tối đa” có thể kéo dài hàng tháng.
Do đó, điều cực kỳ quan trọng là phải sử dụng “max-age” ngắn khi triển khai tiêu đề lần đầu. Nếu có bất kỳ vấn đề nào, thì chúng chỉ tồn tại trong một thời gian ngắn sau khi được phát hiện. Chỉ khi bạn tự tin rằng trang web của mình hoàn toàn tuân thủ HSTS thì bạn mới nên định cấu hình bộ hẹn giờ HSTS dài.
Mẹo: Cũng có thể đặt “tuổi tối đa” là 0, điều này về cơ bản sẽ xóa mục nhập HSTS đã lưu khỏi bất kỳ ai nhìn thấy nó. Điều này có thể hữu ích nếu có sự cố, nhưng nó sẽ chỉ ảnh hưởng đến người dùng khi và nếu họ quyết định thử lại.