HTTP Security Header là gì? Cách dùng HTTP Security Header

X-Frame-Options là gì? Bạn đã biết HTTP Security header là gì chưa? Chúng có ý nghĩa như thế nào trong lập trình web? Hãy cùng Quantrimang.com tìm hiểu nhé!

HTTP Security Header

Khi muốn ghé thăm một trang web, trình duyệt Internet bạn dùng nhận một số dữ liệu từ trang đó. Kết quả, một hội thoại diễn ra giữa thiết bị của bạn và web đó. Điều này xảy ra với giao thức HTTP. Bạn có thể tăng thêm bảo mật bằng cách can thiệp vào hoạt động này.

Nếu đang chạy một web hay muốn trở thành lập trình viên website, HTTP security header là vô giá với bạn bởi chúng đóng vai trò tích cực trong bảo mật cho cả phía người dùng và website.

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

HTTP Strict-Transport-Security (HSTS) buộc người dùng sử dụng HTTPS cho mọi truy vấn họ thực hiện trong trình duyệt. Đây là một cách chắc chắn để chống lại các cuộc tấn công mạng, đồng thời đảm bảo an toàn cho mọi truy cập.

Kích hoạt HSTS khá dễ. Hãy xem xét cuộc đối thoại giữa máy chủ và server. Khi cố gắng truy cập một trang qua trình duyệt, bạn là client. Trang bạn muốn mở phụ thuộc vào server. Mục tiêu của bạn là cho server biết rằng bạn muốn mở trang này. Đây là một hoạt động truy vấn. Mặt khác, máy chủ dẫn bạn tới trang đó nếu bạn đáp ứng những điều kiện cần thiết.

Nhớ rằng điều này liên quan tới flag HTTP Header mẫu:

Strict-Transport-Security: max-age=16070200;

Khi thêm flag này vào thông tin header của phản hồi HTTP, toàn bộ truy vấn người dùng tạo sẽ trở thành HTTPS. Bất kỳ nội dung người dùng viết ra ở đây, trình duyệt sẽ tự động đánh giá giao thức là HTTPS và thiết lập kết nối bảo mật.

Cách dùng HSTS

Thay vì thêm tất cả thông tin header HTTP trong layer code, bạn có thể làm việc này trên Apache, IIS, Nginx, Tomcat và các ứng dụng web server khác.

Để kích hoạt HSTS trong Apache:

LoadModule headers_module modules/mod_headers.so
<VirtualHost *:443>
    Header always set Strict-Transport-Security "max-age=2592000; includeSubDomains"
</VirtualHost>

Để bật HSTS trong Nginx:

add_header Strict-Transport-Security max-age=2592000; includeSubdomains

Để kích hoạt HSTS với IIS web.config:

<system.webServer>
   <httpProtocol>
       <customHeaders>
           <add name="Strict-Transport-Security" value="max-age=63072000"/>
       </customHeaders>
   </httpProtocol>
</system.webServer> 

Dành cho người dùng Cloudflare

Cloudflare cung cấp dịch vụ HTTPS miễn phí cho mọi người bằng dịch vụ Keyless SSL của nó; trước khi đăng ký tải trước HSTS, bạn cần biết chứng chỉ không thuộc về bạn. Hiện nhiều trang dùng chứng chỉ SSL bởi chúng là cách đơn giản để bảo mật dữ liệu.

Tuy nhiên, Cloudflare giờ hỗ trợ tính năng HSTS. Bạn có thể kích hoạt tất cả tính năng HSTS bao gồm tải trước, qua giao diện web Cloudflare mà không gặp khó khăn trong việc cấu hình trên web server.

X-Frame-Options là gì?

X-Frame-Options

X-Frame-Options là một security header được hỗ trợ bởi tất cả trình duyệt hiện đại. X-Frame-Options chống lại các click giả mạo như Clickjacking. Đúng như tên gọi, nó là hoạt động của một khung nội tuyến dễ bị tấn công, hay còn gọi là iframe. Đây là các phần tử trên một trang web được nhúng vào trang HTML khác trong trang web “mẹ”, vì thế, bạn có thể dùng nội dung từ các nguồn khác trên trang. Thế nhưng những kẻ tấn công dùng iframe dưới quyền kiểm soát của họ để khiến người dùng thực hiện những hoạt động không mong muốn.

Vì lí do này, bạn cần ngăn kẻ tấn công tìm thấy iframe trên trang.

Vị trí và cách dùng X-Frame-Options

Một số nhà phát triển đang cố gắng thực hiện những việc X-Frame-Options làm qua JavaScript. Điều đó không sai nhưng vẫn có rủi ro bởi còn tồn tại lỗ hổng trong code. Do đó, cách tốt nhất là nên để nhiệm vụ này cho trình duyệt Internet bạn dùng.

Tuy nhiên, lập trình viên cần biết 3 tham số sau về X-Frame-Options:

  • Deny: Ngăn chặn hoàn toàn trang bị gọi trong iframe bất kỳ.
  • SAMEORIGIN: Chặn mọi domain ngoài domain của bạn gọi trong iframe.
  • ALLOW-FROM url: Chấp nhận các cuộc gọi iframe của URL được cung cấp dưới dạng tham số. Chặn những cái khác.

Dưới đây là ví dụ về cách dùng SAMEORIGIN và X-Frame-Options với NGINX, Apache, IIS:

Dùng X-Frame-Options SAMEORIGIN cho Nginx:

add_header X-Frame-Options SAMEORIGIN;

Dùng X-Frame-Options SAMEORIGIN cho Apache:

Header always append X-Frame-Options SAMEORIGIN

Dùng X-Frame-Options SAMEORIGIN cho IIS:

<httpProtocol>
   <customHeaders>
     <add name="X-Frame-Options" value="SAMEORIGIN" />
   </customHeaders>
 </httpProtocol>

Chỉ cần thêm header SAMEORIGIN sẽ giúp bạn bảo vệ khách truy cập tốt hơn.

X-XSS-Protection là gì?

Dùng thông tin X-XSS-Protection có thể bảo vệ người dùng khỏi các cuộc tấn công XSS. Đầu tiên, bạn cần loại bỏ các lỗ hổng XSS trên ứng dụng. Sau đó cung cấp bảo mật dựa trên code, các biện pháp chuyên sâu hơn như header X-XSS-Protection.

Cách dùng X-XSS-Protection

Các trình duyệt hiện đại có thể phát hiện payload XSS bằng cách lọc nội dung do ứng dụng tạo. Bạn có thể kích hoạt tính năng này bằng thông tin header X-XSS-Protection.

Để kích hoạt header X-XSS-Protection trong Nginx:

add_header X-Frame-X-XSS-Protection 1;

Để kích hoạt header X-XSS-Protection trong Apache:

Header always append X-XSS-Protection 1

Để kích hoạt header X-XSS-Protection trong IIS:

<httpProtocol>
   <customHeaders>
     <add name="X-XSS-Protection" value="1" />
   </customHeaders>
 </httpProtocol>

Để chặn khối code bị tấn công XSS chạy, bạn có thể dùng:

X-XSS-Protection: 1; mode=block

X-Content-Type-Options là gì?

Các trình duyệt triển khai một quá trình phân tích tên MIME Type Sniffing trên nội dung được ứng dụng web cung cấp cho chúng. Ví dụ, nếu có một truy vấn để truy cập file PDF hoặc PNG, các trình duyệt chạy phân tích trên phản hồi HTTP sẽ suy ra loại tệp.

Xem xét một file ở định dạng jpeg nhưng nó thực sự lại có nội dung Text/HTML. Sau khi dùng tiện ích và chuyển các bảo vệ trong mô đun upload, file này được upload thành công. File đã upload được gọi qua URL và MIME Type sniffing trả về kết quả dưới dạng Text/HTML. Nó hiện nội dung là HTML. Đó là lúc lỗ hổng XSS xuất hiện.

Vì thế, bạn cần ngăn ngừa trình duyệt quyết định nội dung bằng MIME Type sniffing. Để làm việc này, bạn có thể dùng nosniff.

Header X-Content-Type-Options cho Nginx:

add_header X-Content-Type-Options nosniff;

Header X-Content-Type-Options cho Apache:

Header always X-Content-Type-Options nosniff

Header X-Content-Type-Options cho IIS:

<httpProtocol>
   <customHeaders>
     <add name="X-Content-Type-Options" value="nosniff" />
   </customHeaders>
 </httpProtocol>

Trên đây là những điều bạn cần biết về HTTP Security Header. Hi vọng bài viết hữu ích với các bạn.

Thứ Bảy, 30/09/2023 10:15
3,52 👨 1.266
0 Bình luận
Sắp xếp theo