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 liên quan
"SOVEREIGN CLOUD" VÀ NGHỊCH LÝ CHUYỂN ĐỔI SỐ: GIẢI MÃ BÀI TOÁN TUÂN THỦ CHO NGÀNH TÀI CHÍNH & CHÍNH PHỦ
Các tổ chức thuộc nhóm ngành trọng yếu như tài chính, ngân hàng (BFSI) và cơ quan nhà nước đang khao khát hiện đại hóa hệ thống IT (chuyển đổi sang kiến trúc Microservices, sử dụng Container/Kubernetes) để tăng tốc độ triển khai dịch vụ và nâng cao trải nghiệm người dùng. Tuy nhiên, họ lại đang vấp phải một "nghịch lý" lớn: Càng muốn áp dụng công nghệ Cloud hiện đại, rào cản về tuân thủ pháp lý và an toàn thông tin càng trở nên khắt khe.
BÀI TOÁN "NOISY NEIGHBOR" TRÊN CLOUD VÀ CHIẾN LƯỢC TỐI ƯU HIỆU NĂNG CHO HỆ THỐNG CỐT LÕI
Trong kỷ nguyên mà dữ liệu là "dầu mỏ mới", việc vận hành các hệ thống xương sống (Core ERP, Core Banking) hay các workload tính toán chuyên sâu (AI, Machine Learning, Datalake) đòi hỏi năng lực phần cứng vô cùng mạnh mẽ.
"BÃO GIÁ" HẠ TẦNG CNTT VÀ BÀI TOÁN SỐNG CÒN CỦA DOANH NGHIỆP: VÌ SAO PRIVATE CLOUD DẠNG DỊCH VỤ LÊN NGÔI?
Làn sóng bùng nổ hạ tầng AI toàn cầu đang tạo ra một "cơn địa chấn" về giá phần cứng máy chủ, chip nhớ DRAM, ổ cứng doanh nghiệp và chi phí năng lượng. Đứng trước áp lực phải chuyển đổi số nhưng lại vấp phải bài toán chi phí đầu tư (CapEx) đắt đỏ cùng thời gian giao hàng kéo dài hàng tháng, các nhà quản trị công nghệ (CIO) và tài chính (CFO) đang tìm kiếm một hướng đi mới: Không cần bỏ hàng tỷ đồng mua sắm hạ tầng mà vẫn sở hữu riêng một hệ thống Private Cloud hoàn chỉnh, an toàn và sẵn sàng vận hành ngay lập tức.
Digital Workplace là gì? Xu hướng môi trường làm việc số cho doanh nghiệp
Digital Workplace là gì? Khám phá mô hình vận hành, thành phần, lợi ích, ứng dụng, thách thức và xu hướng môi trường làm việc số cho doanh nghiệp.
Lỗ hổng Shellshock là gì? Cơ chế, tác động và cách khắc phục
Lỗ hổng Shellshock (CVE-2014-6271) trong Bash là gì, vì sao nghiêm trọng? Tìm hiểu nguyên nhân, hệ thống bị ảnh hưởng và cách kiểm tra, vá lỗi.
Scratch là gì? Cách hoạt động, ứng dụng và đối tượng phù hợp
Scratch là gì? Tìm hiểu cách lập trình bằng khối lệnh, các khái niệm có thể học, ứng dụng thực tế và sự khác nhau giữa Scratch với ScratchJr.
Phân biệt các loại Web Hosting: Đâu là lựa chọn phù hợp cho website?
Phân biệt các loại Web Hosting và tìm hiểu cách mỗi mô hình hoạt động, từ đó lựa chọn giải pháp phù hợp với nhu cầu, quy mô và định hướng phát triển website.
Website có cần hosting không? Giải đáp chi tiết từ A-Z
Website có cần hosting không? Tìm hiểu vai trò của hosting, domain và các trường hợp cần và không cần mua hosting riêng cho website.
Top nhà cung cấp dịch vụ Cloud Camera uy tín tại Việt Nam
Top nhà cung cấp dịch vụ Cloud Camera uy tín tại Việt Nam, cùng tiêu chí lựa chọn và những lưu ý quan trọng trước khi đăng ký dịch vụ.
Trigger là gì trong DBMS? Cách hoạt động, các loại phổ biến và ứng dụng
Trigger là gì trong DBMS? Tìm hiểu cách trigger hoạt động, các loại phổ biến, ví dụ minh họa, ưu nhược điểm và khi nào nên sử dụng.
Bình luận ()