Tại sao bạn cần HSTS (HTTP Strict Transport Security)

Tác giả sysadmin, T.M.Hai 20, 2022, 08:52:22 SÁNG

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Tại sao bạn cần HSTS (HTTP Strict Transport Security)


Tiêu đề HTTP Strict-Transport-Security (HSTS) có thể được sử dụng để tăng tính bảo mật của trang web. Trong bài đăng này, chúng tôi sẽ thảo luận về cách thức hoạt động của nó, tại sao nó lại quan trọng và tại sao bạn nên cân nhắc sử dụng tiêu đề HSTS.

1. Vấn đề không có HSTS

Như bạn có thể biết, Giao thức truyền tải siêu văn bản (HTTP) là một giao thức văn bản rõ ràng. Điều này có nghĩa là tất cả dữ liệu được truyền bằng giao thức này có thể được đọc bởi người có quyền truy cập vào mạng vì dữ liệu không được mã hóa khi truyền giữa máy khách và máy chủ.

Bạn cũng có thể biết rằng sự cố này được giải quyết bằng cách sử dụng HTTPS, về cơ bản mã hóa dữ liệu được truyền giữa máy khách và máy chủ.

Nhiều trang web phản hồi trên cả HTTP và HTTPS, thông thường, máy chủ web sẽ được định cấu hình để thực hiện chuyển hướng 301 cho các yêu cầu HTTP sang HTTPS tương đương, đảm bảo rằng các liên lạc tiếp theo được an toàn.

Có một vấn đề với điều này, tuy nhiên. Trừ khi khách truy cập vào trang web được đề cập cố tình nhập phiên bản HTTPS của URL, theo mặc định nếu họ chỉ nhập tên miền vào trình duyệt, yêu cầu đầu tiên sẽ là HTTP văn bản rõ ràng.

Vấn đề nằm ở chỗ, nếu yêu cầu đầu tiên này bị chặn bởi một cuộc tấn công kiểu Man-in-the-middle (MITM), thì khách hàng không có gì đảm bảo rằng họ đang tương tác với một máy chủ hợp pháp. Ví dụ: tại thời điểm này, MITM có thể cung cấp một bản sao trùng lặp của trang web từ máy chủ của chính họ và đợi nạn nhân nhập thông tin đăng nhập của họ.

2. HSTS cố gắng giúp đỡ như thế nào

Đây là nơi tiêu đề HSTS cố gắng khắc phục tình hình. Tiêu đề HSTS có thể được cung cấp bởi máy chủ web (chẳng hạn như Apache hoặc Nginx) cùng với các tiêu đề thông thường khác. Các trình duyệt web hỗ trợ HSTS sẽ nhận tiêu đề này và gửi tất cả các yêu cầu trong tương lai bằng HTTPS. Ngay cả khi bạn nhập một URL bằng HTTP theo cách thủ công, trình duyệt sẽ bỏ qua điều này và thay đổi nó thành HTTPS trước khi mọi thứ được truyền qua mạng.

Điều này nghe có vẻ tuyệt vời, nhưng vẫn còn một vấn đề nhỏ ở đây. Trình duyệt web sẽ không bắt đầu hoạt động theo cách này cho đến khi nó nhận được tiêu đề HSTS lần đầu tiên từ máy chủ web. Điều này có nghĩa là lần đầu tiên người dùng duyệt một trang web bằng HSTS, trình duyệt của họ chưa biết về sự hiện diện của tiêu đề HSTS, vì vậy yêu cầu ban đầu đầu tiên này vẫn có thể bị chặn.

Ngoài ra, tiêu đề HSTS chỉ hợp lệ trong khoảng thời gian được xác định trong tiêu đề. Thông thường nên đặt thời gian này thành ít nhất 6 tháng, tuy nhiên, điều này không có nghĩa là yêu cầu đầu tiên sau khi tiêu đề hết hạn có thể được gửi qua HTTP văn bản rõ ràng.

3. HSTS Preload tiết kiệm thời gian

Những thiếu sót nhỏ này được giải quyết bằng cách sử dụng tải trước HSTS. Tải trước HSTS về cơ bản là danh sách tất cả các miền được biết là sử dụng HSTS. Theo định kỳ, danh sách này được cập nhật và tệp phẳng được thêm vào các trình duyệt web riêng lẻ khi chúng được cập nhật. Do đó, có thể mất một khoảng thời gian trước khi miền của bạn được thêm thành công vào danh sách tải trước HSTS, mất khoảng 2 tháng để miền này được thêm vào.

Bằng cách này, trình duyệt web về cơ bản được mã hóa cứng để biết tất cả các miền được hỗ trợ HSTS, do đó, bất cứ khi nào có yêu cầu đối với miền HSTS, nó sẽ được gửi ngay qua HTTPS mà không cần phải xem tiêu đề HSTS đầu tiên từ máy chủ web đích. Việc thiết lập tải trước yêu cầu phải sửa đổi tiêu đề HSTS để chứa các tên miền phụ bao gồm và chỉ thị tải trước.

Chỉ thị tải trước được đặt trong tiêu đề HSTS trên máy chủ web, khi tất cả các yêu cầu tải trước đã được định cấu hình, bạn gửi miền của mình vào danh sách tải trước HSTS.

Theo mặc định, việc chuyển hướng các yêu cầu HTTP sang HTTPS để lại khả năng tấn công kiểu MITM để chặn yêu cầu ban đầu. Tiêu đề HTTP Strict-Transport-Security (HSTS) cố gắng giải quyết vấn đề này, khi một trình duyệt web được hỗ trợ nhìn thấy tiêu đề HSTS, nó sẽ biết rằng trang web đã được định cấu hình để sử dụng HTTPS và sẽ gửi tất cả các yêu cầu trong tương lai qua HTTPS thay vì HTTP.

Điều này vẫn có một vấn đề nhỏ là không hoạt động đối với yêu cầu đầu tiên, nó sẽ chỉ bắt đầu hoạt động khi trình duyệt web nhìn thấy tiêu đề HSTS lần đầu tiên. Ngoài ra, tiêu đề HSTS chỉ có hiệu lực trong khoảng thời gian được xác định trong tiêu đề.

Thiếu sót cuối cùng này được giải quyết bằng cách thêm tên miền vào danh sách tải trước HSTS, mặc dù phải mất khá nhiều thời gian để thực hiện, nó đảm bảo rằng các trình duyệt web được hỗ trợ sẽ biết rằng trang web nên được truy cập qua HTTPS, buộc trình duyệt phải chuyển hướng tất cả các yêu cầu qua HTTPS và không bao giờ sử dụng HTTP.