Tuyển dụng
Viettel IDC

CSP là gì? Hướng dẫn về Content Security Policy cho website

10/11/2025

CSP (Content Security Policy) là chính sách bảo mật cho phép trình duyệt chỉ tải nội dung từ nguồn an toàn, giúp ngăn tấn công XSS, chặn mã độc và bảo vệ toàn bộ dữ liệu trên website. Cùng Viettel IDC tìm hiểu CSP là gì, cách CSP hoạt động và lý do mọi website hiện đại đều cần áp dụng.

CSP là gì?

CSP là gì?

CSP (viết tắt của Content-Security-Policy) là chính sách bảo mật giúp trình duyệt kiểm soát nguồn tài nguyên mà website được phép tải, từ đó ngăn chặn tấn công XSS và hạn chế mã độc chèn vào trang. CSP hoạt động bằng cách chỉ cho phép website tải script, CSS, hình ảnh, font hoặc iframe từ những nguồn an toàn mà bạn đã định nghĩa trước.

Ví dụ cấu hình cơ bản của Content Security Policy:

Content-Security-Policy:

  default-src 'self';

  script-src 'self' https://cdn.example.com;

  style-src 'self' https://fonts.googleapis.com;

  font-src https://fonts.gstatic.com;

  img-src 'self' data:;

  connect-src 'self' https://api.example.com;

  frame-ancestors 'none';

Giải thích cụ thể:

- default-src 'self': Chỉ tải nội dung từ chính website.

- script-src: Chỉ chạy JavaScript từ domain chính và CDN an toàn.

- style-src: Cho phép CSS từ Google Fonts.

- img-src: Ảnh từ trang và ảnh base64.

- connect-src: Request API từ nguồn hợp lệ.

- frame-ancestors: Chặn trang khác nhúng website của bạn.

Vì sao CSP quan trọng trong bảo mật web?

CSP giữ vai trò như một lớp phòng thủ chủ động ngay tại trình duyệt, giúp ngăn chặn các hành vi tải và thực thi nội dung không an toàn. Nhờ cơ chế kiểm soát nguồn tài nguyên chặt chẽ, CSP trở thành một yếu tố quan trọng trong việc bảo vệ tính toàn vẹn và an toàn của website.

- Giảm thiểu tấn công XSS: CSP chỉ cho phép chạy JavaScript từ các nguồn đã định nghĩa đồng thời ngăn chặn hoàn toàn mã JavaScript nội tuyến hoặc eval() không an toàn. Nhờ vậy, ngay cả khi kẻ tấn công chèn được script độc hại, trình duyệt cũng sẽ từ chối thực thi.

- Bảo vệ kết nối HTTPS: CSP hỗ trợ củng cố việc sử dụng HTTPS, đảm bảo dữ liệu trao đổi giữa máy khách và máy chủ luôn được mã hóa. Khi CSP yêu cầu các tài nguyên chỉ được tải qua HTTPS, trang web dễ dàng thực thi kết nối an toàn và đảm bảo tính toàn vẹn nội dung.

- Chặn nội dung không tin cậy: CSP ngăn chặn việc trang web vô tình tải các nội dung (script, hình ảnh, iframe,...) từ các nguồn không an toàn hoặc không xác định, qua đó tránh thu thập dữ liệu sai hoặc lộ thông tin cho bên thứ ba không mong muốn. Kết quả là trang web được bảo vệ tốt hơn trước mã độc và các cuộc tấn công từ bên ngoài.

Cơ chế hoạt động bảo mật của CSP

CSP được trình duyệt thực thi dựa trên cách website gửi chính sách bảo mật kèm theo mỗi trang. Có hai phương thức triển khai phổ biến:

CSP thông qua HTTP Header

CSP được gửi đến trình duyệt qua HTTP header Content-Security-Policy hoặc qua thẻ <meta> trong HTML. Khi trình duyệt nhận được header này, nó sẽ hiểu đó là một tập hợp quy tắc (directive) về nguồn tài nguyên được phép tải. 

Ví dụ, nếu policy khai báo script-src 'self' example.com, trình duyệt sẽ chỉ cho phép tải JavaScript từ trang hiện tại và từ domain example.com; mọi nguồn khác sẽ bị chặn.

CSP thông qua thẻ meta trong HTML

Bạn cũng có thể cấu hình CSP trực tiếp trong HTML khi không thể chỉnh sửa máy chủ. Cách này phù hợp để thử nghiệm nhanh hoặc áp dụng chính sách cho từng trang riêng lẻ. Ví dụ cấu hình CSP bằng thẻ meta trong HTML:

<meta http-equiv="Content-Security-Policy" content="default-src 'self';">

Khi gặp thẻ này trong phần <head>, trình duyệt sẽ chỉ cho phép tải tài nguyên từ chính domain đang truy cập và tự động chặn toàn bộ nội dung từ nguồn bên ngoài.

Các directive quan trọng nhất trong CSP

CSP gồm nhiều directive khác nhau, mỗi directive quản lý một loại tài nguyên riêng trên website. Bảng dưới đây giúp bạn nắm nhanh chức năng và cách cấu hình các directive quan trọng nhất trong CSP.

 

Directive

Chức năng

Ví dụ cấu hình

default-src

Nguồn mặc định cho tất cả tài nguyên khi không có directive cụ thể.

default-src 'self';

script-src

Kiểm soát nguồn tải và thực thi JavaScript, giúp ngăn tấn công XSS.

script-src 'self' https://cdn.example.com;

style-src

Quy định nguồn tải CSS.

style-src 'self' 'unsafe-inline';

img-src

Chỉ định nguồn hình ảnh được phép tải.

img-src 'self' data:;

font-src

Cho phép tải font từ domain hợp lệ.

font-src https://fonts.gstatic.com;

connect-src

Nguồn dành cho AJAX, fetch(), WebSocket, API.

connect-src 'self' https://api.example.com;

frame-ancestors

Xác định website được phép nhúng trang của bạn qua iframe.

frame-ancestors 'self';

form-action

Domain được phép nhận dữ liệu từ các biểu mẫu.

form-action 'self' https://secure.example.com;

media-src

Nguồn cho audio/video.

media-src media1.com media2.com;

object-src

Nguồn cho plug-in và nội dung như PDF, Flash.

object-src 'none';

base-uri

Giới hạn giá trị của thẻ <base> để ngăn thay đổi hướng liên kết.

base-uri 'self';

 

Hướng dẫn triển khai Content Security Policy

Bước 1: Tạo CSP Header trên máy chủ

Cách triển khai CSP đầy đủ nhất là cấu hình trực tiếp HTTP header Content-Security-Policy trên máy chủ. Khi header này được gửi kèm mỗi phản hồi, trình duyệt sẽ áp dụng toàn bộ chính sách bảo mật đã khai báo và kiểm soát chặt chẽ các nguồn tài nguyên được phép tải. 

Đây cũng là phương pháp hỗ trợ đầy đủ mọi tính năng của CSP, phù hợp cho hệ thống chạy trên Nginx, Apache hoặc các nền tảng tương tự. Ví dụ cấu hình Nginx:

add_header Content-Security-Policy "<policy-chính-sách>";

Bước 2: Chạy thử CSP ở chế độ Report-Only

Trước khi áp dụng CSP chính thức, bạn nên kích hoạt chế độ Content-Security-Policy-Report-Only để kiểm tra toàn bộ vi phạm tiềm ẩn. Ở chế độ này, trình duyệt sẽ không chặn tài nguyên, nhưng vẫn ghi log vi phạm vào console hoặc gửi dữ liệu về endpoint thông qua report-uri hoặc report-to. 

Nhờ đó, bạn có thể phát hiện các nguồn script, style, hình ảnh hoặc API bị chặn mà không gây lỗi hiển thị hoặc ảnh hưởng đến trải nghiệm người dùng. Ví dụ cấu hình:

Content-Security-Policy-Report-Only: <policy>;

Bước 3: Xác định và bổ sung nguồn tài nguyên an toàn

Sau khi thu thập dữ liệu từ chế độ Report-Only, bạn cần tổng hợp toàn bộ domain hợp lệ mà website đang sử dụng, bao gồm CDN, API bên thứ ba, nguồn script, style, font và các thành phần giao tiếp như WebSocket. 

Đây là bước quan trọng để đảm bảo CSP không chặn sai tài nguyên hợp lệ khi bật chính thức. Với các script nội tuyến bắt buộc, bạn nên chuyển sang dùng nonce hoặc hash thay vì cho phép unsafe-inline, nhằm đảm bảo mức độ an toàn cao nhất.

Bước 4: Chốt chính sách và triển khai CSP chính thức

Khi whitelist đã đầy đủ và không còn vi phạm quan trọng, bạn có thể chuyển sang header Content-Security-Policy để kích hoạt cơ chế chặn hoàn toàn. Đây là trạng thái thực thi nghiêm ngặt, trong đó mọi nguồn không nằm trong quy định đều bị từ chối. 

Lưu ý chính sách cần được gửi trên tất cả phản hồi, không chỉ trang chủ, để trình duyệt áp dụng nhất quán trên toàn bộ website. Ví dụ kích hoạt chính thức:

Content-Security-Policy: <policy>;

Bước 5: Theo dõi và cập nhật chính sách CSP

Sau khi triển khai, bạn nên thường xuyên kiểm tra báo cáo từ report-uri hoặc report-to để phát hiện các vi phạm mới khi website thay đổi giao diện hoặc thêm dịch vụ bên thứ ba. Bạn cũng có thể dùng các công cụ như CSP Evaluator hoặc trình kiểm tra bảo mật của trình duyệt để rà soát và tối ưu lại chính sách.

Hướng dẫn triển khai Content Security Policy

Những thách thức và giải pháp khi triển khai CSP

Áp dụng CSP giúp tăng cường bảo mật, nhưng nếu triển khai không đúng cách, website có thể gặp lỗi hiển thị hoặc chặn nhầm tài nguyên hợp lệ. Dưới đây là những thách thức phổ biến và cách giải quyết tương ứng để đảm bảo CSP hoạt động ổn định.

- Có thể làm hỏng chức năng trang: CSP nghiêm ngặt đôi khi chặn cả các script hoặc tài nguyên hợp lệ chưa được khai báo, khiến form, bản đồ hoặc video không hoạt động. Bạn có thể hạn chế tình trạng này bằng cách chạy chế độ Report-Only trước rồi bổ sung các nguồn tin cậy vào whitelist dựa trên log vi phạm.

- Xử lý nội dung động và script nội tuyến: Các script inline hoặc script động như widget, chat hay bộ đếm có thể bị CSP chặn nếu không cấu hình đúng. Để các thành phần này hoạt động an toàn, bạn nên dùng nonce hoặc hash theo CSP Level 3 và khai báo rõ ràng các CDN được phép trong script-src.

- CSP không thay thế việc viết mã an toàn: CSP không thể ngăn các lỗ hổng XSS xuất phát từ chính mã nguồn, đặc biệt là các lỗi chèn mã thuộc về phía máy chủ. Do đó, bạn vẫn cần duy trì các biện pháp an toàn như kiểm tra dữ liệu đầu vào, mã hóa đầu ra và tuân thủ nguyên tắc viết mã bảo mật.

- Hạn chế hỗ trợ trên trình duyệt cũ: Một số trình duyệt cũ không hiểu hoặc bỏ qua CSP, khiến chính sách không được áp dụng đầy đủ. Cách tốt nhất là xác định nhóm trình duyệt mục tiêu và chuẩn bị thêm các cơ chế bảo vệ khác như X-Frame-Options cho những nền tảng không hỗ trợ CSP.

Kết luận

Qua bài viết này, bạn đã hiểu rõ CSP là gì và vì sao Content Security Policy là lớp bảo mật quan trọng giúp website tránh XSS, ngăn mã độc và kiểm soát toàn bộ nguồn tài nguyên tải xuống. Khi được triển khai đúng cách, CSP trở thành một phần không thể thiếu trong chiến lược bảo mật hiện đại, đảm bảo website hoạt động an toàn và ổn định trước các mối đe dọa trên Internet.

Để được hỗ trợ tư vấn và tìm hiểu các dịch vụ của Viettel, bạn có thể liên hệ trực tiếp tới Viettel IDC qua các kênh:

- Hotline: 1800 8088 (miễn phí cước gọi)

- Fanpage: https://www.facebook.com/viettelidc  

Bình luận ()

Đăng nhập | Đăng ký
để gửi bình luận
Ý kiến của bạn sẽ được xét duyệt trước khi đăng.
Ý kiến của bạn sẽ được xét duyệt trước khi đăng.
Ý kiến của bạn sẽ được xét duyệt trước khi đăng.
Xem thêm bình luận

Tin liên quan

09/11/2026

Cổng SATA là gì? Cách nhận biết và kết nối ổ HDD, SSD

Cổng SATA là gì? Cách nhận biết cổng SATA trên mainboard, phân biệt các phiên bản và kiểm tra ổ HDD, SSD có tương thích trước khi nâng cấp.

09/11/2026

Microsoft Publisher là gì? Tổng quan về phần mềm thiết kế dàn trang

Microsoft Publisher là gì? Đây là phần mềm dàn trang của Microsoft, hỗ trợ thiết kế ấn phẩm bằng các mẫu có sẵn và công cụ sắp xếp văn bản, hình ảnh linh hoạt.

09/11/2026

Có nên sử dụng các công cụ Text to speech miễn phí? Ưu điểm và hạn chế

Có nên sử dụng các công cụ Text to Speech miễn phí? Cân nhắc chất lượng giọng đọc, hạn mức và quyền sử dụng để biết khi nào bản miễn phí đủ dùng hoặc cần nâng cấp.

09/11/2026

Kiến trúc Client Server là gì? Cách mô hình máy chủ - máy khách hoạt động

Kiến trúc Client Server là gì? Đây là mô hình máy khách - máy chủ, tổ chức việc gửi yêu cầu, xử lý và trao đổi dữ liệu trong các ứng dụng và dịch vụ mạng.

09/11/2026

Cấu trúc silo là gì trong SEO? Cách xây dựng cấu trúc silo cho website

Cấu trúc silo là gì? Nắm rõ cách phân nhóm nội dung, phân biệt silo vật lý và silo ảo để xây dựng website dễ điều hướng, thuận tiện quản lý và hỗ trợ SEO.

09/11/2026

Top 15 các phần mềm quay lại màn hình miễn phí cho máy tính và điện thoại

Các phần mềm quay lại màn hình miễn phí giúp bạn ghi hình rõ nét, lưu lại thao tác và tạo video hướng dẫn trực quan cho nhu cầu học tập, làm việc hằng ngày.

09/11/2026

Postfix là gì? Hướng dẫn cài đặt và cấu hình trên Ubuntu

Postfix là gì được giải đáp qua vai trò của phần mềm chuyển thư mã nguồn mở, giúp doanh nghiệp chủ động quản lý luồng email và cấu hình hệ thống trên Linux.

09/11/2026

Cách quét mã độc cho website WordPress và lưu ý bảo mật cần biết

Cách quét mã độc cho website WordPress giúp phát hiện tệp đáng ngờ, xác định dấu vết xâm nhập và hỗ trợ xử lý sớm nguy cơ ảnh hưởng đến dữ liệu, người truy cập.

09/11/2026

Top 20 các plugin hữu ích cho WordPress tốt nhất nên cài đặt

Các plugin hữu ích cho WordPress giúp mở rộng chức năng sẵn có của website, cải thiện trải nghiệm người dùng và đơn giản hóa công việc quản trị hằng ngày.

09/11/2026

Hướng dẫn cài đặt các ứng dụng trên Ubuntu cho người mới

Hướng dẫn cài đặt các ứng dụng trên Ubuntu chi tiết từng bước, giúp người mới dễ dàng thao tác từ tải phần mềm, thiết lập gói cài đến khởi chạy ứng dụng.