นโยบายความปลอดภัยของเนื้อหา: การตั้งค่าของเพจบล็อกการโหลดทรัพยากร


101

ฉันใช้CAPTCHAในการโหลดหน้าเว็บ แต่ถูกบล็อกเนื่องจากเหตุผลด้านความปลอดภัยบางประการ

ฉันกำลังประสบปัญหานี้:

    นโยบายความปลอดภัยของเนื้อหา: การตั้งค่าของเพจบล็อกการโหลด
    ของทรัพยากรที่
    http://www.google.com/recaptcha/api.js?onload=myCallBack&render=explicit
    ("script-src http://test.com:8080 'unsafe-inline' 'ไม่ปลอดภัย-eval'")

ฉันใช้ JavaScript และเมตาแท็กต่อไปนี้:

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

ถ้าฉันเป็นคุณฉันจะลองใช้โค้ดฝั่งเซิร์ฟเวอร์ไม่ใช่จาวาสคริปต์ JS ไม่ค่อยดีกับ CORS และสิ่งที่คล้ายกัน Google มีตัวเลือกให้ ..
Gogol

ฉันได้เพิ่มjavascriptแท็กให้กับคำถามนี้เนื่องจากคำถามไม่มีส่วนเกี่ยวข้องกับ jQuery มีผลต่อ JavaScript ใด ๆ อันที่จริงคำถามจะมีประโยชน์มากกว่าหากคุณลบjQueryแท็กทั้งหมด แต่ไม่ใช่ที่ของฉันที่จะทำเช่นนั้น
Manngo

1
คำตอบที่ถูกลบในขณะนี้ถูกต้อง เหตุผลประการหนึ่งสำหรับ"นโยบายความปลอดภัยของเนื้อหา: การตั้งค่าของเพจบล็อกการโหลดทรัพยากร"คือหากไม่ได้เปิดใช้งานหรือบล็อก JavaScript (เช่นโดยNoScript ) ในเบราว์เซอร์ ในกรณีที่เป็นส่วนหนึ่งของการส่งออกข้อผิดพลาดอาจจะ"ไม่สามารถประมวลผลคำสั่งที่ไม่รู้จัก 'noscript เครื่องหมาย"
Peter Mortensen

คำตอบ:


84

คุณบอกว่าคุณสามารถโหลดสคริปต์ได้จากไซต์ของคุณเองเท่านั้น (ด้วยตนเอง) จากนั้นคุณได้พยายามโหลดสคริปต์จากไซต์อื่น ( www.google.com ) และเนื่องจากคุณได้ จำกัด สิ่งนี้คุณจึงไม่สามารถทำได้ นั่นคือประเด็นทั้งหมดของนโยบายความปลอดภัยของเนื้อหา (CSP)

คุณสามารถเปลี่ยนบรรทัดแรกเป็น:

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

หรืออาจเป็นการดีที่จะลบบรรทัดนั้นออกทั้งหมดจนกว่าคุณจะพบข้อมูลเพิ่มเติมเกี่ยวกับ CSP CSP ปัจจุบันของคุณจะสวยอยู่แล้วหละหลวม (ให้unsafe-inline, unsafe-evalและdefault-srcของ*) ดังนั้นจึงอาจจะไม่เพิ่มมูลค่ามากเกินไปที่จะซื่อสัตย์


5
นี่เป็นวิธีแก้ปัญหาที่ไม่ปลอดภัย - ตัวตรวจสอบ CSP ของ Googleให้ความล้มเหลวขั้นรุนแรงหลายบรรทัดนี้ (น่าเสียดายที่การใช้ CSP ที่ดีนั้นไม่ใช่เรื่องเล็กน้อยและจำเป็นต้องปรับแต่งต่อไซต์)
Freewalker

7
ฉันมีปัญหากับความคิดเห็นนี้ ปัญหาเกี่ยวกับ CSP เป็นเพราะ CSP ดั้งเดิม คำตอบทั้งหมดนี้ใช้เวลาเพียงแค่นั้นและเพิ่มโดเมน www.google.com ลงในคำตอบสำหรับคำถามนี้ ฉันขอแนะนำให้กระชับ CSP เพิ่มเติมในขณะเดียวกันได้หรือไม่ อาจเป็นไปได้ แต่ฉันจะบอกว่ามันอยู่นอกขอบเขตสำหรับคำถาม โดยเฉพาะอย่างยิ่งเมื่อเห็นได้ชัดว่า OP ไม่คุ้นเคยกับ CSP
Barry Pollard

3
ตอนนี้ CSP "ไม่ปลอดภัย" หรือไม่? ที่เถียงได้ การอนุญาตให้ใช้งานแบบอินไลน์ที่ไม่ปลอดภัยและไม่ปลอดภัยและแหล่งที่มาเริ่มต้นของ * เอาชนะจุดประสงค์ส่วนใหญ่ของ CSP (ด้วยเหตุนี้ฉันจึงแนะนำให้ลบออก) แต่ควรจำไว้ว่า CSP ไม่สามารถคลายการควบคุมเบราว์เซอร์ได้แม้แต่นโยบายที่สูญเสียนี้ก็เช่นกัน เพิ่มการควบคุมหน้าเว็บที่ไม่มี CSP โดยมีหลักฐานว่าบล็อกสคริปต์ของ Google! ดังนั้น "ไม่ปลอดภัย" อาจไม่ใช่คำที่ดี "หละหลวมเกินไปที่จะคุ้มค่า" อาจเป็นวิธีที่ดีกว่าในการใช้ถ้อยคำ ใช่แล้ว CSP นี้เป็นที่ต้องการอย่างมาก แต่การเพิ่ม Google เข้าไปไม่ใช่ "วิธีแก้ปัญหาที่ไม่ปลอดภัย"
Barry Pollard

3
จุดยุติธรรมที่ CSP ใด ๆ (นอกเหนือจาก "ทุกอย่างเรียบร้อยดี) โดยทั่วไปจะดีกว่าไม่มี
Freewalker

14

ด้วยโครงการASP.NET Core Angularของฉันที่ทำงานใน Visual Studio 2019 บางครั้งฉันได้รับข้อความแสดงข้อผิดพลาดนี้ในคอนโซล Firefox:

นโยบายความปลอดภัยของเนื้อหา: การตั้งค่าของเพจบล็อกการโหลดทรัพยากรแบบอินไลน์ (“ default-src”)

ใน Chrome ข้อความแสดงข้อผิดพลาดแทน:

ไม่สามารถโหลดทรัพยากร: เซิร์ฟเวอร์ตอบสนองด้วยสถานะ 404 ()

ในกรณีของฉันไม่มีส่วนเกี่ยวข้องกับนโยบายการรักษาความปลอดภัยเนื้อหาของฉัน แต่เป็นเพียงผลของข้อผิดพลาด TypeScript ในส่วนของฉัน

ตรวจสอบหน้าต่างเอาต์พุต IDE ของคุณเพื่อหาข้อผิดพลาด TypeScript เช่น:

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

หมายเหตุ: เนื่องจากคำถามนี้เป็นผลลัพธ์แรกใน Google สำหรับข้อความแสดงข้อผิดพลาดนี้


11

ฉันมีประเภทข้อผิดพลาดที่คล้ายกัน ขั้นแรกฉันพยายามเพิ่มเมตาแท็กในโค้ด แต่ไม่ได้ผล

ฉันพบว่าบนเว็บเซิร์ฟเวอร์ nginx คุณอาจมีการตั้งค่าความปลอดภัยที่อาจบล็อกโค้ดภายนอกเพื่อเรียกใช้:

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

ตรวจสอบนโยบายเนื้อหา - ความปลอดภัย คุณอาจต้องเพิ่มการอ้างอิงแหล่งที่มา


3
ทราบว่านี้เป็นที่ไม่ปลอดภัย - นี้เนื้อหา SECURITYPOLICY ได้รับความล้มเหลวของระดับความรุนแรงสูงจากของ Google CSP Evaluator
Freewalker

1

ฉันจัดการเพื่ออนุญาตไซต์ที่จำเป็นทั้งหมดของฉันด้วยส่วนหัวนี้:

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


-11

คุณสามารถปิดใช้งานได้ในเบราว์เซอร์ของคุณ

Firefox

พิมพ์about:configในแถบที่อยู่ของ Firefox และพบและตั้งค่าให้security.csp.enablefalse

โครเมียม

คุณสามารถติดตั้งส่วนขยายที่เรียกว่าDisable Content-Security-Policyปิดใช้งาน CSP


79
ไม่เคยทำเช่นนี้นอกเหนือจากการดีบักชั่วคราว นี่เป็นคุณลักษณะด้านความปลอดภัยที่สำคัญของเบราว์เซอร์ของคุณ
hackel

4
สิ่งนี้จะแก้ไขได้เฉพาะในเครื่องและนอกจากนี้ยังทำให้เบราว์เซอร์ของคุณมีความเสี่ยงมากขึ้น
Neil Chowdhury

3
นี่คือ "คำแนะนำ" สำหรับการทดสอบ / แก้ไขข้อบกพร่องหรือไม่? หากเป็นเช่นนั้นควรกล่าวถึงคำตอบเพื่อหลีกเลี่ยงการแพร่กระจายช่องโหว่ที่เป็นอันตรายไปยังชุมชนที่ไม่รู้จัก อย่างไรก็ตามตามที่ @NeilChowdhury กล่าวไว้สิ่งนี้จะแก้ไขได้ในระบบของคุณแล้วผู้เยี่ยมชมเว็บไซต์จริงล่ะ?
Fr0zenFyr

12
วิธีแก้ปัญหาชั่วคราว แต่มีประโยชน์สำหรับการดีบัก (บวกหนึ่ง)
NarendraR

4
@hackel ฉันจะทำสิ่งนี้ ฉันจะ.
アレックス
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.