İçerik Güvenliği Politikası: Sayfanın ayarları bir kaynağın yüklenmesini engelledi


101

Sayfa yüklemede CAPTCHA kullanıyorum , ancak bazı güvenlik nedenlerinden dolayı engelliyor.

Bu problemle karşı karşıyayım:

    İçerik Güvenliği Politikası: Sayfanın ayarları yüklemeyi engelledi
    bir kaynağın
    http://www.google.com/recaptcha/api.js?onload=myCallBack&render=explicit
    ("script-src http://test.com:8080 'unsafe-inline' 'unsafe-eval'").

Aşağıdaki JavaScript ve meta etiketi kullandım:

<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>

Senin yerinde olsam, bunu javascript değil, sunucu tarafı koduyla yapmayı denerdim. JS, CORS ve benzeri şeylerle pek iyi değil. Google'ın bunun için seçenekleri var ..
Gogol

javascriptBu soruya bir etiket ekledim çünkü sorunun jQuery ile ilgisi yok. Herhangi bir JavaScript'i etkiler. Aslında, jQueryetiketi tamamen kaldırırsanız soru daha faydalı olacaktır , ancak bunu yapmak benim görevim değil.
Manngo

1
Şimdi silinmiş bir cevap doğrudur. "İçerik Güvenliği Politikası: Sayfanın ayarlarının bir kaynağın yüklenmesini engellemesinin" bir nedeni , tarayıcıda JavaScript'in etkinleştirilmemiş veya engellenmemiş olmasıdır (örneğin, NoScript tarafından ). Bu durumda, hata çıktısının bir kısmı "Bilinmeyen yönerge 'noscript-marker' işlenemedi" olabilir .
Peter Mortensen

Yanıtlar:


84

Yalnızca kendi sitenizden (kendi) komut dosyaları yükleyebileceğinizi söylediniz. Daha sonra başka bir siteden ( www.google.com ) bir komut dosyası yüklemeyi denediniz ve bunu kısıtladığınız için yapamazsınız. İçerik Güvenliği Politikası'nın (CSP) tüm amacı budur .

İlk satırınızı şu şekilde değiştirebilirsiniz:

<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">

Veya alternatif olarak, CSP hakkında daha fazla bilgi edinene kadar bu satırı tamamen kaldırmaya değer olabilir. Geçerli CSP oldukça gevşek zaten (izin olduğunu unsafe-inline, unsafe-evalve bir default-srcbir *muhtemelen dürüst olmak gerekirse, çok fazla değer taşımıyorsa, bu yüzden).


5
Bu güvenli olmayan bir çözümdür - Google'ın CSP denetleyicisi bu satıra birden fazla Ciddi arıza verir. (Maalesef iyi bir CSP uygulamak önemsiz değildir ve site başına özelleştirilmesi gerekir.)
Freewalker

7
Bu yoruma itiraz ediyorum. CSP ile ilgili sorunlar orijinal CSP'den kaynaklanmaktadır. Tüm bu yanıt, bunu almak ve soruya yanıt olarak buna www.google.com etki alanını eklemekti. CSP'yi aynı anda daha da sıkılaştırmayı önerebilir miydim? Muhtemelen, ama bunun söz konusu kapsam dışı olduğunu söyleyebilirim. Özellikle de OP'nin CSP'ye aşina olmadığı zaten belli olduğu için.
Barry Pollard

3
Şimdi CSP "güvensiz" mi? Bu tartışılabilir. Güvenli olmayan satır içi ve güvenli olmayan değerlendirmeye ve varsayılan bir * kaynağına izin vermek, bir CSP'nin amacının çoğunu geçersiz kılar (bu nedenle onu kaldırmayı da önerdim), ancak CSP'nin tarayıcı kontrollerini hiçbir zaman gevşetemeyeceği ve bu nedenle bu politika kaybolsa bile unutulmamalıdır. CSP içermeyen bir sayfa üzerinde biraz kontrol eklemek - bir Google komut dosyasını engellediği gerçeğinden de anlaşılacağı gibi! Yani "güvensiz" muhtemelen harika bir terim değildir. "Zahmete değer olamayacak kadar gevşek" belki de bunu ifade etmenin daha iyi bir yoludur. Yani evet, bu CSP arzulanan çok şey bırakıyor, ancak Google'ı buna eklemek "güvenli olmayan bir çözüm" değil.
Barry Pollard

3
Herhangi CSP (her şeyi "dışında gayet) o Adil noktası genellikle hiç olmamasından daha iyi olurdu.
FReeWaLKeR

Bununla ilgili küçük bir sorun var, chrome://global/content/elements/panel.jstüm sayfalarda hata ayıklamayı devre dışı bırakan (Firefox) ' dan bu hatayı alıyorum
AaA

14

Benim ile ASP.NET Çekirdek Açısal proje Visual Studio 2019 çalışan, bazen Firefox konsolunda bu hata mesajını alıyorum:

İçerik Güvenliği Politikası: Sayfanın ayarları, bir kaynağın satır içi ("default-src") yüklenmesini engelledi.

Chrome'da bunun yerine hata mesajı şöyledir:

Kaynak yüklenemedi: sunucu 404 () durumuyla yanıt verdi

Benim durumumda bunun İçerik Güvenlik Politikamla hiçbir ilgisi yoktu, bunun yerine sadece benim açımdan bir TypeScript hatasının sonucuydu.

IDE çıktı pencerenizde bir TypeScript hatası olup olmadığını kontrol edin, örneğin:

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

Not: Bu soru, Google'da bu hata mesajının ilk sonucu olduğundan.


11

Benzer bir hata tipim vardı. Önce koda meta etiketleri eklemeye çalıştım ama işe yaramadı.

Nginx web sunucusunda, harici kodun çalışmasını engelleyebilecek bir güvenlik ayarınız olabileceğini öğrendim:

# 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'";

İçerik-Güvenlik-Politikasını kontrol edin. Kaynak referansını eklemeniz gerekebilir.


3
Bunun güvenli olmadığını unutmayın - bu İçerik Güvenliği Politikası, Google'ın CSP Değerlendiricisinden Yüksek Önem Dereceli hataları alır .
Freewalker

1

Gerekli tüm sitelerime şu başlık ile izin vermeyi başardım:

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

Hem kullandığım Angular versiyonunu (v8 -> v9'dan) hem de TypeScript versiyonunu (3.5.3 -> en son) yükselterek bu sorunu çözdüm.


1
Açıklaması nedir?
Peter Mortensen

-11

Bunları tarayıcınızda devre dışı bırakabilirsiniz.

Firefox

Tip about:configFirefox adres çubuğuna bulmak security.csp.enableve ayarlayın false.

Krom

Disable Content-Security-PolicyCSP'yi devre dışı bırakmak için çağrılan uzantıyı yükleyebilirsiniz .


80
Geçici hata ayıklama dışında bunu ASLA yapmayın. Bu, tarayıcınızın kritik bir güvenlik özelliğidir.
hackel

4
Bu yalnızca yerel olarak düzeltir ve ayrıca tarayıcınızı çok daha savunmasız bırakır.
Neil Chowdhury

3
Bu test / hata ayıklama için bir "tavsiye" mi? Eğer öyleyse, tehlikeli güvenlik açıklarının farkında olmayan insan topluluklarına yayılmasını önlemek için yanıt olarak belirtilmelidir. Bu arada, @NeilChowdhury'nin dediği gibi, bu onu sisteminizde düzeltir, gerçek web sitesi ziyaretçileri ne olacak?
Fr0zenFyr

12
geçici çözüm ancak hata ayıklama için yararlı (artı bir)
NarendraR

4
@hackel Bunu YAPACAĞIM. YAPACAĞIM.
ア レ ッ ク ス
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.