HTTP Security Headers

HTTP Security Headers

Có rất nhiều điều cần xem xét khi bảo mật trang web hoặc ứng dụng web của bạn, nhưng một nơi tốt để bắt đầu là khám phá các tiêu đề bảo mật HTTP của bạn và đảm bảo bạn theo kịp các thực tiễn tốt nhất .
Trong nhiều trường hợp, chúng rất dễ thực hiện và chỉ yêu cầu thay đổi cấu hình máy chủ web nhẹ.
Các tiêu đề bảo mật HTTP cung cấp một lớp bảo mật khác bằng cách giúp giảm thiểu các cuộc tấn công và các lỗ hổng bảo mật.
Trong bài đăng này, tôi sẽ khám phá một trong số họ để giúp bạn hiểu rõ hơn về mục đích và cách thực hiện chúng.

What Are HTTP Security Headers?

Bất cứ khi nào trình duyệt yêu cầu một trang web từ máy chủ web, máy chủ web sẽ phản hồi với nội dung cùng với Tiêu đề phản hồi HTTP. Một số tiêu đề này chứa meta data như mã hóa nội dung, kiểm soát bộ đệm, mã lỗi trạng thái, v.v.

k01

Cùng với đó là các tiêu đề bảo mật HTTP cho trình duyệt của bạn để biết cách ứng xử khi xử lý nội dung trang web .
Ví dụ: bằng cách sử dụng bảo mật strict-transport-security, bạn có thể buộc trình duyệt chỉ giao tiếp qua HTTPS

Có sáu chiêu chí quan trọng trong header security HTTP khác nhau mà  tôi sẽ khám phá bên dưới (không theo thứ tự cụ thể nào) mà bạn nên biết và tôi khuyên bạn nên triển khai nếu có thể.

1. Content Security Policy

Header HTTP content-security-policy  cung cấp một lớp bảo mật bổ sung, Chính sách này giúp ngăn chặn các cuộc tấn công như Cross Site Scripting (XSS) và các cuộc injection attackskhác bằng cách xác định các nguồn nội dung được phê duyệt và do đó cho phép trình duyệt tải chúng.

kk02

Tất cả các trình duyệt chính hiện cung cấp đầy đủ hoặc hỗ trợ một phần cho chính sách bảo mật nội dung, một trình duyệt cũ hơn nó chỉ đơn giản là không được thực thi.

kk03

Có nhiều chỉ thị mà bạn có thể sử dụng với chính sách bảo mật nội dung.
Ví dụ này dưới đây cho phép các tập lệnh từ cả tên miền hiện tại (được xác định bởi ‘self,) cũng như google-analytics.com.

content-security-policy: script-src ‘self’ https://www.google-analytics.com

Để khám phá tất cả các chỉ thị và để xem triển khai trên Nginx và Apache, hãy đảm bảo kiểm tra bài viết chuyên sâu của chúng tôi về Content Security Policy.

2. X-XSS-Protection

Các x-xss-protection header được thiết kế để enable the cross-site scripting (XSS)  được tích hợp trong trình duyệt web hiện đại, Điều này thường được bật theo mặc định, nhưng sử dụng nó sẽ thực thi nó, Nó được hỗ trợ bởi Internet Explorer 8+, Chrome và Safari . Dưới đây là một ví dụ về những gì tiêu đề trông như thế nào.

x-xss-protection: 1; mode=block

Enable in Nginx#
add_header x-xss-protection “1; mode=block” always;

Enable in Apache#
header always set x-xss-protection “1; mode=block”

3. HTTP Strict Transport Security (HSTS)

Header strict-transport-security là một cải tiến bảo mật giới hạn các trình duyệt web truy cập các máy chủ web chỉ qua HTTPS , Điều này đảm bảo kết nối không thể được thiết lập thông qua kết nối HTTP không an toàn, có thể dễ bị tấn công

kk04

Tất cả các trình duyệt hiện đại support HTTP strict transport security ngoại trừ Opera Mini và các phiên bản trước của Internet Explorer.

kk05

Dưới đây là một ví dụ về những gì tiêu đề trông như thế nào.

strict-transport-security: max-age=31536000; includeSubDomains; preload

4. X-Frame-Options

Tiêu đề x-frame-options cung cấp bảo vệ nhấp chuột bằng cách không cho phép iframe tải trên trang web của bạn. Nó được hỗ trợ bởi IE 8+, Chrome 4.1+, Firefox 3.6.9+, Opera 10.5+, Safari 4+. Dưới đây là một ví dụ về những gì tiêu đề trông như thế nào.

x-frame-options: SAMEORIGIN

Enable in Nginx#
add_header x-frame-options “SAMEORIGIN” always;

Enable in Apache#
header always set x-frame-options “SAMEORIGIN”

5. Public-Key-Pins

Tiêu đề khóa công khai (public-key-pins) yêu cầu trình duyệt web liên kết khóa công khai với một máy chủ web nhất định để ngăn chặn các cuộc tấn công MITM bằng cách sử dụng giả mạo và giả mạo chứng chỉ X.509 , Điều này bảo vệ người dùng trong trường hợp cơ quan cấp chứng chỉ bị xâm phạm , Dưới đây là một ví dụ về những gì tiêu đề trông như thế nào.

public-key-pins: pin-sha256=”t/OMbKSZLWdYUDmhOyUzS+ptUbrdVgb6Tv2R+EMLxJM=”; pin-sha256=”PvQGL6PvKOp6Nk3Y9B7npcpeL40twdPwZ4kA2IiixqA=”; pin-sha256=”ZyZ2XrPkTuoiLk/BR5FseiIV/diN3eWnSewbAIUMcn8=”; pin-sha256=”0kDINA/6eVxlkns5z2zWv2/vHhxGne/W0Sau/ypt3HY=”; pin-sha256=”ktYQT9vxVN4834AQmuFcGlSysT1ZJAxg+8N1NkNG/N8=”; pin-sha256=”rwsQi0+82AErp+MzGE7UliKxbmJ54lR/oPheQFZURy8=”; max-age=600; report-uri=”https://www.keycdn.com

6. X-Content-Type-Options

Tiêu đề x-content-type ngăn Internet Explorer và Google Chrome sniffing một phản hồi từ loại nội dung khai báo , Điều này giúp giảm nguy cơ tải xuống theo ổ đĩa và giúp xử lý nội dung đúng cách .

x-content-type: nosniff

Enable in Nginx#
add_header X-Content-Type-Options “nosniff” always;

Enable in Apache#
Header always set X-Content-Type-Options “nosniff”

Nguồn : https://www.keycdn.com/blog/http-security-headers