2016-06-21 21 views
9

Tôi đang cố gắng triển khai ứng dụng của mình sau tài liệu đẩy mã. Sau đó, tôi đã thêm bảo mật nội dung sau vào ứng dụng của tôi index.htmlTừ chối tải hình ảnh vì vi phạm chính sách bảo mật nội dung - Cordova

<meta http-equiv="Content-Security-Policy" content="default-src https://codepush.azurewebsites.net 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *"> 

Ngay lập tức tôi thêm vào, ứng dụng của tôi không chạy lại. Khi tôi chạy trình duyệt cordova của mình. Tôi thấy nhiều lỗi trong bảng điều khiển. Hóa ra phong cách tác phẩm của tôi tham khảo từ github, hình ảnh của tôi tham khảo từ mysite.com/... và các kịch bản bên ngoài khác của tôi, goopleapis là chính sách bảo mật của tôi xuống dưới

<meta http-equiv="Content-Security-Policy" content="default-src * 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *"> 

nay nó hoạt động tốt. Câu hỏi của tôi là, phân nhánh bảo mật là gì? Tôi có nên để nó theo cách đó không? Làm thế nào tốt hơn tôi nên làm điều này? Bất kỳ trợ giúp hoặc ý kiến ​​sẽ được đánh giá cao. Tôi lo lắng rời khỏi * có thể cho phép các cuộc tấn công có ý định dừng lại.

Trả lời

5

Bạn nói đúng, rời khỏi CSP của bạn như thế này có thể giúp mọi người dễ dàng tấn công hơn. Ý tưởng chính đằng sau việc sử dụng CSP là danh sách trắng url như được giải mã here.

Bằng cách lập danh sách trắng tất cả mọi thứ bằng ký tự đại diện *, bạn cho phép kẻ tấn công tải mã (và thực thi) từ mọi nơi khi người đó có thể đưa mã vào ứng dụng của bạn. Hãy xem bài viết được liên kết về điều này, nó tốt hơn rất nhiều so với những gì tôi đang viết ở đây;)

Vì vậy, cách thích hợp để làm điều này là gì?

  1. Tìm hiểu tên miền bạn muốn đưa vào danh sách trắng và loại tên miền nào cung cấp.
  2. Loại bỏ các ký tự đại diện và danh sách trắng chính xác các miền đó cho chính xác những tài nguyên bạn cần. Ví dụ, hãy xem các bảng định kiểu của bạn từ GitHub. Bạn sẽ có thêm GitHub như một miền đáng tin cậy cho phong cách hơi như thế này: style-src 'self' https://github.com 'unsafe-inline';

Lưu ý: Hãy cẩn thận với chính sách default-src vì nó sẽ ghi đè các chính sách khác. Và khi nói đến danh sách trắng hình ảnh, bạn có thể phải thêm từ khóa data: như vậy: img-src 'self' http://somedomain.com data:;

Mozilla's documentation là khá tốt nếu bạn đang tìm kiếm một cái nhìn tổng quan của tất cả các chính sách và từ khóa ...

+0

Tài liệu thực sự hữu ích. Hãy xem chúng nếu câu hỏi này không trả lời mọi thứ. –

3

giải quyết với:

script-src 'self' http://xxxx 'unsafe-inline' 'unsafe-eval'; 
+0

Điều này giải quyết được vấn đề của tôi khi tải hình ảnh trong Cordova + Phaser3 '' – bFunc

Các vấn đề liên quan