CSP là gì? Hướng dẫn về Content Security Policy cho website
10/11/2025CSP (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 (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.
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.

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
Tin nổi bật
Tin liên quan
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Bình luận ()