Tôi đang cố gắng sử dụng MathJax như một phần của ứng dụng web của chúng tôi sử dụng khá nghiêm ngặt Content Security Policy (CSP). Vấn đề là MathJax được mã hóa để sử dụng eval()
[chính xác, dưới dạng Function()
] không được CSP coi là an toàn theo mặc định.CSP: Cách cho phép không an toàn-eval cho một tiền tố URI cụ thể (Firefox)
Tôi đang sử dụng tiêu đề CSP sau hiện:
X-Content-Security-Policy: allow 'self'; img-src *; media-src *; frame-src *; font-src *; frame-ancestors 'none'; style-src *; report-uri '/:save-csp-violation';
nào gây ra đang MathJax 2.0 thất bại vì nó sử dụng Function()
. Tôi đã cố gắng cho phép không an toàn-eval (tức là Function()
) chỉ cho MathJax nằm trong cùng một nguồn gốc dưới đường dẫn /:static/math/
. Để làm điều đó, tôi cố gắng thêm
unsafe-eval '/:static/math/*'
để làm cho tiêu đề đầy đủ giống như
X-Content-Security-Policy: allow 'self'; img-src *; media-src *; frame-src *; font-src *; frame-ancestors 'none'; style-src *; report-uri '/:save-csp-violation'; unsafe-eval '/:static/math/*'
nhưng tôi vẫn không thể Firefox 13.0 để chạy mã. Tôi nhận được một thông báo lỗi Firefox Web Console (nằm trong Tools - Web Developer):
[10:09:59.072] call to Function() blocked by CSP @ http://localhost:8080/:static/math/2.0/MathJax.js?config=TeX-AMS-MML_HTMLorMML:29
Tuy nhiên, tôi không nhận được một báo cáo CSP đến 'báo cáo-uri'. (Như bạn thấy, tôi hiện đang chạy thử nghiệm thông qua cổng localhost tùy chỉnh mà không có SSL, trong trường hợp tạo nên sự khác biệt. Dấu hai chấm trước static
không phải là lỗi đánh máy, tôi đặt trước tất cả các phần đường dẫn bắt đầu bằng dấu hai chấm để sử dụng nội bộ ứng dụng, tất cả nội dung của người dùng có thể tự do xác định các URL khác.)
Việc tôi sử dụng thuộc tính unsafe-eval
không chính xác hoặc không thể cho phép không an toàn chỉ cho tập con 'tự'? Mục đích là để cho phép không an toàn-eval chỉ cho cùng một tiền tố đường dẫn gốc /:static/math
, thực thi mã CSP JS nghiêm ngặt cho 'self
' và không có mã JS cho bất kỳ phương pháp nào khác.
Firefox 13.0 cũng chứa một lỗi hoặc thiếu tính năng mà tiêu đề CSP của nó không khớp với biến thể W3C. Xem lỗi tại đây: https://bugzilla.mozilla.org/show_bug.cgi?id=746978 –