Chính sách bảo mật nội dung: Cài đặt của trang đã chặn tải tài nguyên


101

Tôi đang sử dụng CAPTCHA khi tải trang, nhưng nó đang chặn vì một số lý do bảo mật.

Tôi đang đối mặt với vấn đề này:

    Chính sách bảo mật nội dung: Cài đặt của trang đã chặn tải
    của một nguồn tại
    http://www.google.com/recaptcha/api.js?onload=myCallBack&render=explicit
    ("script-src http://test.com:8080 'secure-inline' 'secure-eval'").

Tôi đã sử dụng JavaScript và thẻ meta sau:

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'">
<script src="http://www.google.com/recaptcha/api.js?onload=myCallBack&render=explicit" async defer></script>

Nếu tôi là bạn, tôi sẽ thử làm điều đó với mã phía máy chủ chứ không phải javascript. JS không khá tốt với CORS và những thứ tương tự. Google có các tùy chọn cho điều đó ..
Gogol

Tôi đã thêm một javascriptthẻ vào câu hỏi này, vì câu hỏi không liên quan gì đến jQuery. Nó ảnh hưởng đến bất kỳ JavaScript nào. Trên thực tế, câu hỏi sẽ hữu ích hơn nếu bạn xóa jQuerytoàn bộ thẻ, nhưng tôi không phải là nơi để làm điều đó.
Manngo

1
Một câu trả lời hiện đã bị xóa là đúng. Một lý do cho "Chính sách bảo mật nội dung: Cài đặt của trang đã chặn tải tài nguyên" là nếu JavaScript không được bật hoặc bị chặn (ví dụ: bởi NoScript ) trong trình duyệt. Trong trường hợp đó, một phần của đầu ra lỗi có thể là "Không thể xử lý chỉ thị không xác định 'noscript-marker'" .
Peter Mortensen

Câu trả lời:


84

Bạn đã nói rằng bạn chỉ có thể tải các tập lệnh từ trang web của chính mình (chính bạn). Sau đó, bạn đã cố gắng tải một tập lệnh từ một trang web khác ( www.google.com ) và vì bạn đã hạn chế điều này nên bạn không thể. Đó là toàn bộ điểm của Chính sách bảo mật nội dung (CSP).

Bạn có thể thay đổi dòng đầu tiên của mình thành:

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' http://www.google.com">

Hoặc, cách khác, có thể đáng để loại bỏ hoàn toàn dòng đó cho đến khi bạn tìm hiểu thêm về CSP. CSP hiện tại của bạn là khá lỏng lẻo nào (cho phép unsafe-inline, unsafe-evalvà một default-srcsố *), vì vậy nó có lẽ không thêm quá nhiều giá trị, phải trung thực.


5
Đây là một cách giải quyết không an toàn - trình kiểm tra CSP của Google cung cấp cho dòng này nhiều lỗi nghiêm trọng. (Đáng tiếc là việc thực hiện một CSP tốt là không nhỏ và nó cần phải được tùy chỉnh cho mỗi trang web.)
Freewalker

7
Tôi có vấn đề với nhận xét này. Các vấn đề với CSP là do CSP ban đầu. Tất cả những gì câu trả lời này đã làm là lấy điều đó và thêm miền www.google.com vào miền này để trả lời cho câu hỏi. Tôi có thể đề nghị thắt chặt CSP hơn nữa đồng thời không? Có thể, nhưng tôi sẽ nói rằng điều đó nằm ngoài phạm vi của câu hỏi. Đặc biệt là rõ ràng OP đã không quen thuộc với CSP.
Barry Pollard

3
Bây giờ CSP "không an toàn"? Điều đó có thể tranh cãi. Việc cho phép không an toàn nội tuyến và đánh giá không an toàn và nguồn * mặc định làm mất đi phần lớn mục đích của CSP (do đó, tại sao tôi cũng đề xuất xóa nó), nhưng cần nhớ rằng CSP không bao giờ có thể nới lỏng các kiểm soát của trình duyệt, vì vậy ngay cả chính sách mất này cũng thêm một số quyền kiểm soát trên một trang không có CSP - bằng chứng là nó đang chặn một tập lệnh Google! Vì vậy, "không an toàn" có lẽ không phải là một thuật ngữ tuyệt vời. "Quá lỏng lẻo để trở nên đáng giá" có lẽ là một cách diễn đạt tốt hơn. Vì vậy, có CSP này để lại nhiều điều mong muốn nhưng việc thêm Google vào nó không phải là "giải pháp thay thế không an toàn".
Barry Pollard

3
Điểm hợp lý rằng bất kỳ CSP nào (ngoài "mọi thứ đều ổn) nói chung sẽ tốt hơn là không có.
Freewalker

Có một chút vấn đề nhỏ với điều đó, tôi nhận được lỗi đó từ chrome://global/content/elements/panel.js(Firefox) vô hiệu hóa gỡ lỗi trên tất cả các trang
AaA

14

Với dự án ASP.NET Core Angular của tôi đang chạy trong Visual Studio 2019, đôi khi tôi nhận được thông báo lỗi này trong bảng điều khiển Firefox:

Chính sách bảo mật nội dung: Cài đặt của trang đã chặn việc tải tài nguyên tại nội tuyến (“default-src”).

Trong Chrome, thông báo lỗi là:

Không thể tải tài nguyên: máy chủ đã phản hồi với trạng thái 404 ()

Trong trường hợp của tôi, điều đó không liên quan gì đến Chính sách bảo mật nội dung của tôi, mà thay vào đó chỉ đơn giản là do lỗi TypeScript từ phía tôi.

Kiểm tra cửa sổ đầu ra IDE của bạn để tìm lỗi TypeScript, như:

> ERROR in src/app/shared/models/person.model.ts(8,20): error TS2304: Cannot find name 'bool'.
>
> i 「wdm」: Failed to compile.

Lưu ý: Vì câu hỏi này là kết quả đầu tiên trên Google cho thông báo lỗi này.


11

Tôi đã có một loại lỗi tương tự. Đầu tiên, tôi đã cố gắng thêm các thẻ meta trong mã, nhưng nó không hoạt động.

Tôi phát hiện ra rằng trên máy chủ web nginx, bạn có thể có cài đặt bảo mật có thể chặn mã bên ngoài chạy:

# Security directives
server_tokens off;
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'  https://ajax.googleapis.com  https://ssl.google-analytics.com https://assets.zendesk.com https://connect.facebook.net; img-src 'self' https://ssl.google-analytics.com https://s-static.ak.facebook.com https://assets.zendesk.com; style-src 'self' 'unsafe-inline' https://assets.zendesk.com; font-src 'self' https://fonts.gstatic.com  https://themes.googleusercontent.com; frame-src https://player.vimeo.com https://assets.zendesk.com https://www.facebook.com https://s-static.ak.facebook.com https://tautt.zendesk.com; object-src 'none'";

Kiểm tra Nội dung-Bảo mật-Chính sách. Bạn có thể cần thêm tham chiếu nguồn.


3
Lưu ý rằng điều này là không an toàn - Content-SecurityPolicy này nhận được lỗi với Mức độ nghiêm trọng cao từ Trình đánh giá CSP của Google .
Freewalker

1

Tôi đã quản lý để cho phép tất cả các trang web cần thiết của mình có tiêu đề này:

header("Content-Security-Policy: default-src *; style-src 'self' 'unsafe-inline'; font-src 'self' data:; script-src 'self' 'unsafe-inline' 'unsafe-eval' stackexchange.com");                    

0

Tôi đã giải quyết vấn đề này bằng cách nâng cấp cả phiên bản Angular mà tôi đang sử dụng (từ v8 -> v9) và phiên bản TypeScript (từ 3.5.3 -> mới nhất).


1
Giải thích là gì?
Peter Mortensen

-11

Bạn có thể tắt chúng trong trình duyệt của mình.

Firefox

Nhập about:configvào thanh địa chỉ Firefox và tìm security.csp.enablevà đặt nó thành false.

Trình duyệt Chrome

Bạn có thể cài đặt tiện ích mở rộng được gọi Disable Content-Security-Policyđể tắt CSP.


80
Đừng BAO GIỜ làm điều này, ngoài việc gỡ lỗi tạm thời. Đây là một tính năng bảo mật quan trọng của trình duyệt của bạn.
hackel

4
Điều này sẽ chỉ khắc phục cục bộ và bên cạnh đó, nó khiến trình duyệt của bạn dễ bị tấn công hơn rất nhiều.
Neil Chowdhury,

3
Đây có phải là "lời khuyên" để kiểm tra / gỡ lỗi không? Nếu vậy, nó nên được đề cập trong câu trả lời để tránh lây lan các lỗ hổng nguy hiểm trong cộng đồng những người không biết. Nhân tiện, như @NeilChowdhury đã nói, điều này sẽ sửa chữa nó trên hệ thống của bạn, còn những người truy cập trang web thực tế thì sao?
Fr0zenFyr

12
giải pháp tạm thời nhưng hữu ích để gỡ lỗi (cộng với một)
NarendraR

4
@hackel TÔI SẼ làm điều này. TÔI SẼ.
ア レ ッ ク ス
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.