Content material Safety Coverage và bí quyết triển khai trên trang WordPress

CSP (Content material-Safety-Coverage) hay nói rõ hơn là Content material Safety Coverage header hiện đang dần trở nên phổ cập} hơn bao giờ hết. Tuy nhiên, hiện tại mình chỉ thấy Thế giới di động là 1 trong những web site lớn tại Việt Nam triển khai CSP trên web site của mình, còn lại thì siêu ít. Vậy CSP là gì và tại sao chúng ta nên dùng nó?

  • Cập nhật 31/01: mình thêm vào bí quyết theo dõi những vi phạm CSP trên trang WordPress và những vấn đề sở hữu thuộc tính unsafe-inline

Việc triển khai CSP thường tốn kha khá thời kì bởi siêu ít công cụ tương trợ tự động động. Vì vậy, bạn hãy đọc sơ qua 1 lần trước lúc bắt tay vào làm cho nhé.

CSP là gì?

CSP là 1 biện pháp bảo mật từ phía trình thông qua, giúp ngăn chặn những request xấu được gọi từ web site của chúng ta. CSP là tập hợp 1 danh sách an toàn (whitelist) những area hay kiểu script, type, picture, body mà trình thông qua được load trên web site của chúng ta. Điều này đảm bảo chỉ có những script, type, picture, body được chúng ta chỉ định có thể được tải, những request ko thuộc diện whitelist sẽ bị chặn ngay tức khắc.

CSP header được trả về trình thông qua từ webserver hoặc mã nguồn, tùy thuộc} bí quyết chúng ta cài đặt.

Tuấn đã có 1 bài viết riêng giới thiệu bí quyết làm cho thế nào để ngăn chặn malware thực thi, làm cho chuyển hướng web site WordPress ko mong muốn. Đa số chỉ cần 1 dòng CSP duy nhất. Mời quý khách xem qua:> Hạn chế malware chuyển hướng web site WordPress sở hữu CSP

Dễ thấy nhất, ví dụ 1 hacker xâm nhập được vào hệ thống của bạn mà chèn 1 thẻ <script> dẫn tới 1 tập tin javascript có ý đồ xấu nằm tại tên miền của hắn, dí dụ sentayho.com.vn/jquery.min.js. Đây là dạng tấn công XSS saved siêu phổ cập} mà những web site WordPress hay gặp nên. Nhờ có CSP header, sentayho.com.vn ko thuộc diện whitelist nên ko bí quyết nào tải và thực thi được, từ đấy bảo vệ bạn và người truy cập của bạn.

Như ảnh chụp màn hình trên, 1 số trình thông qua liên tục thu thập thông tin người dùng, hoặc người mua cài đặt những extension ko rõ nguồn gốc dẫn tới việc bị chèn mã độc, quảng bá trên trang mặc dầu chủ web site ko cố ý. Nhờ có CSP, người mua sẽ truy cập web site chúng ta sở hữu giao diện “sạch” nhất có thể vì trình thông qua đã chặn ngay từ đầu rồi.

1 dí dụ vui vẻ khác là tiện ích BeeCost – theo dõi giá cả ko thể thực thi trên web site có dùng CSP, dí dụ như sentayho.com.vn.

Từ đây dẫn tới những ý tưởng chặn những trình thông qua, extension thu thập thông tin và xử lý để tạo lợi thế dựa vào độ phổ cập} như trường hợp CocCoc “gợi ý giá”, BeeCost giúp khách hàng biết được lịch sử giá,…

Những “chỉ thị” của CSP

Ko chỉ ngăn chặn tải Javascript, CSP cũng có tác dụng sở hữu hình ảnh, CSS, body, webfont, media và siêu nhiều chỉ thị (directive) khác. Điều này tạo nên 1 lớp bảo mật vừa đủ cho những web site, giúp người truy cập chỉ tải và dùng đúng những thứ bạn mong muốn.

Xem Thêm  Relay là gì ? Nguyên lý hoạt động của relay > Rơ Le là gì ?

Đấy là những chỉ thị cho từng loại tài nguyên khác nhau, còn bí quyết dùng thì mời bạn đọc sang phần tiếp theo nhé.

Thuộc tính và giá trị của CSP directive

Từng chỉ thị có nhiều area được thêm vào khác nhau, tuy nhiên có 1 số bí quyết dùng nên biết để quý khách có thể dùng thoải mái hơn:

Giá trị của CSP directiveGiải thích

Hãy lấy dí dụ như bài viết mà mình có giới thiệu tại đầu trang, từ đấy phân tách xem trình thông qua sẽ cho phép tải tài nguyên từ những nguồn nào nhé.

script-src ‘self’ ‘unsafe-inline’ ‘unsafe-eval’ sentayho.com.vn sentayho.com.vn sentayho.com.vn sentayho.com.vn sentayho.com.vn sentayho.com.vn sentayho.com.vn

Vậy thì trình thông qua sẽ cho phép tải Javascript từ những nguồn sau:

  • ‘self’
  • ‘unsafe-inline’
  • ‘unsafe-eval’
  • www.googletagmanager.com, sentayho.com.vn,…

Làm cho thế nào để biết web site chúng ta tải từ tên miền nào?

Thực vậy. Tưởng chừng chúng ta có thể nắm trong tay danh sách tên miền mà web site tải tài nguyên về, tuy nhiên danh sách tên miền có thể lớn hơn nhiều.

Có thể cũng vì lí do này mà những web site có đặt quảng bá sẽ ko thể hoặc siêu hạn chế lúc dùng CSP header. Đấy là lí do vì sao hiện tại siêu ít những trang net tại Việt Nam triển khai CSP.

Lấy dí dụ 1 web site của mình có dùng Google Advertisements monitoring code. Ko chỉ 1 tên miền mà có 2 tới 3 tên miền khác được dùng. Vì thế việc đánh giá trước lúc triển khai là vô cùng quan yếu.

Công cụ mình hay dùng là sentayho.com.vn để lấy toàn bộ những tên miền mà web site mình tải tài nguyên về, từ đấy lập danh sách và tiếp tục thử – sai cho tới lúc trình thông qua ko còn báo 1 tên miền nào bị chặn bởi CSP nữa.

Phương pháp dùng CSP trên WordPress

Dù rằng CSP nên được triển khai tại phía webserver (Apache, Nginx,…) vì lí do bảo mật. Tuy nhiên việc chèn CSP header vào web site WordPress là khá đơn giản và có thể thực hành được bằng nhiều bí quyết.

Xin lưu ý những plugin hay đoạn code chỉ giúp bạn chèn CSP header vào web site, còn việc nội dung như thế nào, giá trị ra sao nên tự động do bạn quyết định. Hiện tại mình chưa thấy có công cụ nào tự động động tạo ra giá trị CSP.

Dùng plugin

Trước tiên, bí quyết đơn giản nhất mà ko nên động tới code là cài đặt plugin WP Content material Safety Plugin. Sau khoản thời gian cài đặt và kích hoạt plugin xong, bạn có thể chuyển tới Settings > CSP Choices để khởi đầu cấu hình CSP.

Vì Content material Safety Coverage thực sự là 1 tính năng new, ko thể cứ click on click on rồi hoàn thành cài đặt được nên trông phần cấu hình có vẻ khá rối. Tuy nhiên ví dụ bạn đã đọc qua phần đầu bài viết rồi thì sẽ cảm thấy ổn thôi, có thể tự tín chuyển qua tab Content material Safety Insurance policies để cấu hình cho những directive.

Xem Thêm  Phát sinh tiếng Anh là gì? Cụm từ tương ứng từ phát sinh trong tiếng Anh?

Chèn code quản lý

Thường những trang cần thử nhanh 1 cấu hình cho web site nào đấy thì mình sẽ dùng bí quyết này, chèn quản lý vào tập tin sentayho.com.vn của theme đang dùng là được. Tuy xấu và khó nhìn nhưng siêu hiệu quả.

perform header_csp_generate(){ header(“Content material-Safety-Coverage: default-src ‘self’; script-src ‘self’ ‘unsafe-inline’ sentayho.com.vn sentayho.com.vn sentayho.com.vn; style-src ‘self’ ‘unsafe-inline’ sentayho.com.vn; img-src ‘self’ knowledge: sentayho.com.vn sentayho.com.vn sentayho.com.vn sentayho.com.vn sentayho.com.vn https://*sentayho.com.vn sentayho.com.vn; frame-src sentayho.com.vn sentayho.com.vn sentayho.com.vn; font-src ‘self’; connect-src ‘self’ *sentayho.com.vn sentayho.com.vn sentayho.com.vn sentayho.com.vn; object-src ‘none’”);}add_filter(‘wp_head’, ‘header_csp_generate’);

Dùng webserver để cấu hình

Đây là bí quyết mà mình khuyên dùng để đảm bảo web site vẫn được bảo mật nhất có thể nhắc cả lúc có thể truy cập và chỉnh sửa những tập tin mã nguồn của web site. Tuy nhiên chúng sẽ gặp khó sở hữu việc cấu hình máy chủ dẫn tới CSP header của chúng ta vẫn được bảo vệ 1 bí quyết tuyệt đối.

Nginx

Chèn vào tập tin /and so forth/nginx/nginx.conf, đặt trong block http, tiếp theo restart lại Nginx.

http { # …. add_header Content material-Safety-Coverage “script-src ‘self’ ‘unsafe-inline’ ‘unsafe-eval’ sentayho.com.vn sentayho.com.vn sentayho.com.vn sentayho.com.vn sentayho.com.vn sentayho.com.vn sentayho.com.vn;”; # ….}

Apache

Sở hữu apache có thể đơn giản hơn, bạn chỉ việc chèn vào tập tin .htaccess (vẫn khuyên ko nên vì hacker có thể can thiệp, ví dụ ko còn bí quyết nào khác, hãy chmod hợp lý trước lúc dùng) là được, hoặc chèn vào /and so forth/httpd/conf/httpd.conf. Tiếp tục restart lại Apache.

Header set Content material-Safety-Coverage “script-src ‘self’ ‘unsafe-inline’ ‘unsafe-eval’ sentayho.com.vn sentayho.com.vn sentayho.com.vn sentayho.com.vn sentayho.com.vn sentayho.com.vn sentayho.com.vn;”;

Đánh giá CSP đã được thực thi chưa

Có siêu nhiều web site giúp chúng ta đánh giá việc cấu hình CSP đã hợp lý hay chưa. Mình khuyên dùng công cụ CSP Evaluator của chính Google vươn lên là để đánh giá. Chỉ cần nhập tên miền vào ô bên dưới và nhấn Examine CSP thì mọi directive sẽ hiển thị ra kèm sở hữu đánh giá từ Google.

1 công cụ khác mà mình hay dùng để đánh giá tổng thể mức độ bảo mật của web site dựa vào những response header là Safety Headers. Bên cạnh CSP, họ còn đánh giá siêu nhiều header khác giúp nâng cao cường bảo mật cho web site như X-XSS-Safety giúp bảo vệ người mua khỏi tấn công XSS, X-Body-Choices bảo vệ web site khỏi việc bị nhúng từ 1 trang khác,…

Theo dõi vi phạm CSP

1 tính năng siêu hay của CSP là Report URI giúp trình thông qua báo cáo lại cho chúng ta những vi phạm CSP xảy ra ngay trên trang của mình, từ đấy biết được hacker đang nhắm tới dạng tấn công nào tương tự động ảnh chụp tại đầu bài. Từ những báo cáo này, bạn có thể đánh giá lại mức độ bảo mật của CSP hoặc nới lỏng 1 số area an toàn mà bạn chưa cho vào whitelist.

Phương pháp dùng siêu đơn giản, từng lúc có 1 vi phạm CSP trên trang, trình thông qua sẽ gửi thông tin kèm những dạng vi phạm này tới 1 dịch vụ định sẵn để chúng ta có thể theo dõi lại. 1 trong những dịch vụ miễn chi phí giúp chúng ta theo dõi vi phạm CSP là sentayho.com.vn. Phiên bản miễn chi phí chỉ tương trợ 10,000 report / tháng nhưng theo mình thấy thì đã quá đủ rồi.

Xem Thêm  Tìm hiểu về WebGL phần 1: thư viện đồ họa net.

Sau khoản thời gian đã đăng nhập được vào trang quản trị của Report URI, hãy nhấp vào trang Setup, tiến hành điền 1 subdomain theo ý thích của bạn để định danh sở hữu những trang khác.

Lúc đã điền subdomain bạn muốn, hãy nhìn qua cột trái, sẽ có luôn 1 đường dẫn theo subdomain đã tạo. Chúng ta ko cần truy cập vào đấy mà hãy chèn đường dẫn này vào cấu hình CSP theo cú pháp:

report-uri sentayho.com.vn/r/d/csp/reportOnly

Và cấu hình Report URI cho CSP cho trang WordPress trở nên:

perform header_csp_generate(){ header(“Content material-Safety-Coverage: default-src ‘self’; script-src ‘self’ ‘unsafe-inline’ sentayho.com.vn sentayho.com.vn sentayho.com.vn; style-src ‘self’ ‘unsafe-inline’ sentayho.com.vn; img-src ‘self’ knowledge: sentayho.com.vn sentayho.com.vn sentayho.com.vn sentayho.com.vn sentayho.com.vn https://*sentayho.com.vn sentayho.com.vn; frame-src sentayho.com.vn sentayho.com.vn sentayho.com.vn; font-src ‘self’; connect-src ‘self’ *sentayho.com.vn sentayho.com.vn sentayho.com.vn sentayho.com.vn; object-src ‘none’;report-uri sentayho.com.vn/r/d/csp/reportOnly”);}add_filter(‘wp_head’, ‘header_csp_generate’);

Đợi khoảng 30 phút và bạn sẽ nhận được những báo cáo này. Tuy nhiên ko có báo cáo gì là phải chăng nhất vì điều đấy chứng minh web site ko tải những tài nguyên từ nguồn xấu.

Vấn đề gặp nên

Hiện tại, việc triển khai CSP sẽ dễ dàng ví dụ chúng ta ko quá nghiêm túc về vấn đề bảo mật. Thực vậy, 2 thuộc tính unsafe-inline và unsafe-eval sẽ bị đánh dấu là ko an toàn cho web site nhắc cả lúc chúng ta đã triển khai CSP.

Ví dụ trong đoạn dí dụ tại đầu bài viết, hacker khôn ngoan hơn và chèn quản lý đoạn mã Javascript vào web site thay thế vì tải từ area sentayho.com.vn, thực sự ko gì ngăn chặn được ví dụ chúng ta vẫn dùng unsafe-inline.

Vậy tại sao ko… bỏ unsafe-inline ra khỏi cấu hình CSP?

Vấn đề cũng ko đơn giản như vậy. WordPress là nền móng mở, có thể cài đặt, tùy thuộc} biến siêu nhiều và chuyện những plugin tự động động chèn những đoạn Javascript inline (an toàn) vào web site là hết sức bình thường.

Bằng bí quyết gỡ unsafe-inline, chúng ta đã vô tình vô hiệu hóa luôn toàn bộ đoạn Javascript inline (an toàn) trên web site, dẫn tới 1 hoặc nhiều chức năng ko thể thực hành được nữa.

Mình có nghe nói về CSP nonce, có thể cho phép xử lý những đoạn Javascript inline?

Câu chuyện tiếp tục ko dễ dàng. 1 số plugin luôn luôn có mã Javascript thay thế đổi tại từng trang, từng bài viết. Dí dụ như Contact Kind 7 hoặc những plugin overview bài viết, việc chèn ID bài viết vào những biến vào những đoạn Javascript inline là hết sức bình thường. Mà như vậy, làm cho chúng ta ko thể tạo nonce dùng chung tại toàn bộ bài viết này.

Kết

Việc triển khai CSP header cho web site hiện nay theo mình là tối quan yếu. Có CSP càng sớm càng phải chăng, người mua và chúng ta luôn là người được lợi.

Dù rằng việc cấu hình CSP ko thể tự động động, hoặc có những thuộc tính ‘unsafe-inline’ có thể làm cho CSP ko hiệu quả. Tuy nhiên, mình đã chứng thực siêu nhiều trường hợp mà CSP bảo vệ được web site của chúng ta.

Bài viết được gắn thẻ: CSP, Safety