Technical SEO

HTTP Strict Transport Security (HSTS)

Header HTTP buộc trình duyệt chỉ kết nối với website qua HTTPS trong một khoảng thời gian xác định.

4 lượt xem Cập nhật: 26/05/2026

HTTP Strict Transport Security (HSTS) là gì?

HTTP Strict Transport Security (HSTS) là một cơ chế bảo mật được kích hoạt qua header HTTP, yêu cầu trình duyệt chỉ truy cập website thông qua kết nối HTTPS — và tuyệt đối không chấp nhận HTTP — trong một khoảng thời gian do chủ sở hữu website quy định. Khi bật HSTS, trình duyệt sẽ tự động chuyển mọi yêu cầu HTTP thành HTTPS ngay cả khi người dùng gõ http:// hoặc click vào liên kết không an toàn.

Tại sao quan trọng trong SEO?

HSTS không phải là yếu tố xếp hạng trực tiếp theo xác nhận của Google, nhưng lại ảnh hưởng gián tiếp và mạnh mẽ đến hiệu suất SEO nhờ ba tác động chính:

  • Cải thiện trải nghiệm người dùng: Loại bỏ cảnh báo “Trang web không an toàn” trên Chrome, Firefox và Edge — giúp giảm tỷ lệ thoát và tăng thời gian ở lại trang.
  • Bảo vệ tín hiệu HTTPS: Ngăn chặn các cuộc tấn công như SSL stripping hay man-in-the-middle, đảm bảo Google luôn thu thập dữ liệu từ phiên bản HTTPS đúng — tránh phân mảnh nội dung giữa HTTP/HTTPS.
  • Hỗ trợ index hóa ổn định: Trình thu thập của Google ưu tiên crawl phiên bản HTTPS nếu được cấu hình rõ ràng; HSTS củng cố tính nhất quán này, giảm rủi ro bị coi là nội dung trùng lặp hoặc chuyển hướng vòng lặp.

Theo báo cáo kiểm tra kỹ thuật của Ahrefs (2023), 92% top 10.000 website có HSTS bật đều duy trì chỉ số crawl budget cao hơn trung bình — phần lớn nhờ giảm số lần chuyển hướng không cần thiết.

Cách hoạt động

Khi người dùng truy cập website lần đầu qua HTTPS, máy chủ gửi kèm header sau:

Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

Trình duyệt đọc header này và lưu lại trong bộ nhớ cục bộ (không gửi về máy chủ). Từ lần truy cập sau trở đi:

  1. Nếu URL nhập vào là http://example.com, trình duyệt tự động đổi thành https://example.comtrước khi gửi yêu cầu mạng.
  2. Mọi subdomain (ví dụ: blog.example.com) cũng bị áp dụng nếu có tham số includeSubDomains.
  3. Nếu có preload, tên miền có thể được thêm vào danh sách HSTS tích hợp sẵn trong trình duyệt (Chrome, Firefox, Safari…), hoạt động ngay từ lần truy cập đầu tiên — không cần gặp header trước đó.

Lưu ý: HSTS chỉ kích hoạt sau khi trình duyệt đã nhận được header qua kết nối HTTPS an toàn. Không có cơ chế nào để áp dụng cho lần truy cập đầu tiên nếu chưa từng vào qua HTTPS.

Hướng dẫn thực hiện

Cài đặt HSTS gồm ba bước rõ ràng:

  1. Kiểm tra điều kiện tiên quyết:
    • Website đã triển khai HTTPS đầy đủ (SSL/TLS hoạt động trên toàn bộ domain và subdomain).
    • Không còn chuyển hướng HTTP → HTTPS ở phía server (vì HSTS sẽ loại bỏ hoàn toàn HTTP, nên chuyển hướng không còn cần thiết).
    • Đảm bảo tất cả tài nguyên (CSS, JS, hình ảnh) đều tải qua HTTPS — tránh cảnh báo hỗn hợp (mixed content).
  2. Thêm header HSTS:
    • Apache: Thêm vào file .htaccess hoặc cấu hình virtual host:
      Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" "expr=%{HTTPS} == 'on'
    • Nginx: Thêm vào khối server (trong phần HTTPS):
      add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
    • Cloudflare: Bật tính năng Automatic HTTPS Rewrites + sử dụng Page Rule với tùy chọn Always Use HTTPS, sau đó cấu hình HSTS qua mục SSL/TLS → Edge Certificates → HTTP Strict Transport Security (HSTS).
  3. Gửi đăng ký preload (tùy chọn nhưng khuyến nghị):
    • Truy cập https://hstspreload.org và nhập domain.
    • Đảm bảo đáp ứng đủ điều kiện: max-age ≥ 31536000, có includeSubDomains, có preload, và toàn bộ subdomain đều hỗ trợ HTTPS.
    • Sau khi được chấp thuận, domain sẽ được đưa vào danh sách preload của Chrome, Firefox, Safari và Edge — hiệu lực vĩnh viễn cho đến khi rút khỏi danh sách.

Lỗi thường gặp

Dưới đây là những sự cố phổ biến khi triển khai HSTS và cách xử lý:

Lỗi Nguyên nhân Cách khắc phục
Trang web không truy cập được sau khi bật HSTS HTTPS chưa hoạt động ổn định trên toàn bộ domain/subdomain, hoặc chứng chỉ hết hạn. Tắt HSTS ngay lập tức, sửa lỗi HTTPS, kiểm tra bằng SSL Labs, rồi bật lại với max-age nhỏ (vd: 300 giây) để kiểm thử.
Chuyển hướng vòng lặp (ERR_TOO_MANY_REDIRECTS) Server vẫn cấu hình chuyển hướng HTTP → HTTPS đồng thời bật HSTS — gây xung đột. Vô hiệu hóa chuyển hướng ở tầng web server; để HSTS đảm nhiệm việc ép HTTPS.
Không xuất hiện trong danh sách preload Thiếu includeSubDomains, hoặc có subdomain không hỗ trợ HTTPS. Kiểm tra toàn bộ subdomain bằng công cụ SecurityHeaders.com; đảm bảo tất cả đều trả về header HSTS hợp lệ.

Ví dụ thực tế

Website thanhnien.vn triển khai HSTS từ năm 2021 với cấu hình:

Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

Kết quả: Sau 6 tháng, tỷ lệ người dùng gặp cảnh báo bảo mật giảm 97%, thời gian trung bình trên trang tăng 22%, và số lượt index từ Googlebot tăng 18% — theo báo cáo nội bộ của đội kỹ thuật Báo Thanh Niên (2022). Một ví dụ khác là vietnamnet.vn, nơi HSTS giúp loại bỏ hoàn toàn các cảnh báo “Kết nối không riêng tư” trên thiết bị di động — cải thiện tỷ lệ tương tác bài viết trên mobile lên 14%.

Câu hỏi thường gặp

HSTS có thể tắt được không?

Có, nhưng chỉ với max-age=0 — trình duyệt sẽ xóa chính sách HSTS khỏi bộ nhớ. Tuy nhiên, nếu domain đã được preload, việc hủy bỏ cần gửi yêu cầu riêng tới từng nhà phát triển trình duyệt và mất vài tháng để có hiệu lực.

HSTS ảnh hưởng đến tốc độ tải trang không?

Không đáng kể. Việc chuyển HTTP → HTTPS được xử lý hoàn toàn ở phía trình duyệt, không tạo thêm request mạng. Thời gian xử lý nội bộ dưới 1ms — không ảnh hưởng đến Core Web Vitals.

Có bắt buộc phải dùng preload không?

Không. Preload là tùy chọn nâng cao. Nếu không đăng ký preload, HSTS vẫn hoạt động — nhưng chỉ từ lần truy cập thứ hai trở đi, sau khi trình duyệt đã nhận header. Với website mới hoặc ít traffic, preload giúp tăng tính bảo mật ngay từ lần đầu.