บทความนี้อธิบายถึงนโยบายรักษาความปลอดภัยเนื้อหา (CSP) และวิธีผสานรวมกับโค้ดโฆษณา AdSense โปรดทราบว่าผู้เผยแพร่โฆษณาไม่จำเป็นต้องใช้ CSP หากต้องการใช้ CSP ให้ทําตามขั้นตอนด้านล่างเพื่อให้โค้ด AdSense ทํางานอย่างถูกต้องเมื่อคุณเปิดใช้ CSP
CSP คืออะไร
นโยบายรักษาความปลอดภัยเนื้อหา (CSP) เป็นวิธีรักษาความปลอดภัยให้กับหน้าเว็บโดยจำกัดทรัพยากรและสคริปต์ที่อนุญาตให้โหลดและเรียกใช้ได้ คุณเปิดใช้ CSP ได้โดยตั้งค่าส่วนหัว Content-Security-Policy
ในการตอบกลับ HTTP จากเว็บเซิร์ฟเวอร์
การกำหนดค่า CSP ทำได้ 2 วิธีมาตรฐาน ดังนี้
- ระบุรายการที่อนุญาตของโดเมนที่แทรกทรัพยากรลงในหน้าเว็บได้
- ระบุ Nonce แบบสุ่ม ซึ่งต้องทําเครื่องหมายทรัพยากรในหน้าเว็บเพื่อโหลด แนวทางนี้เรียกว่า CSP แบบเข้มงวด
เนื่องจากโดเมนที่โค้ดโฆษณา AdSense ใช้จะเปลี่ยนแปลงเมื่อเวลาผ่านไป เราจึงรองรับเฉพาะ CSP แบบเข้มงวด (ตัวเลือกที่ 2) แนวทางนี้ช่วยให้ไม่ต้องคอยอัปเดตรายการโดเมนเปลี่ยนไปอยู่เรื่อยๆ ซึ่งอาจล้าสมัยและทำให้เว็บไซต์ใช้งานไม่ได้
การตั้งค่า CSP แบบเข้มงวดด้วยโค้ดโฆษณา AdSense
หากต้องการเปิดใช้ CSP ในเว็บเซิร์ฟเวอร์ ให้ทําตามขั้นตอนที่ระบุไว้ในหัวข้อใช้ CSP แบบเข้มงวด ซึ่งอธิบายวิธีตั้งค่าส่วนหัว CSP และใช้ Nonce กับแท็กสคริปต์ทุกแท็กในหน้าเว็บ รวมถึงโค้ด AdSense โค้ด AdSense รองรับคำสั่ง CSP ต่อไปนี้โดยเฉพาะ
Content-Security-Policy:
object-src 'none';
script-src 'nonce-{random}' 'unsafe-inline' 'unsafe-eval' 'strict-dynamic' https: http:;
base-uri 'none';
report-uri https://your-report-collector.example.com/
คุณเลือกนโยบายที่อนุญาตมากขึ้นได้หากเหมาะกับกรณีการใช้งานของคุณ นโยบายที่เข้มงวดมากขึ้นอาจทำให้ฟังก์ชันการทำงานหยุดชะงักโดยไม่มีการแจ้งเตือน
ตัวอย่างโค้ด
ต่อไปนี้เป็นตัวอย่างโค้ด AdSense ที่มี CSP แบบเข้มงวด
<script nonce="${nonce}" async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=i-gno/re-d1234&host=ca-host-pub-5678" crossorigin="anonymous">
</script>
<ins class="adsbygoogle"
style="display:inline-block;width:728px;height:90px"
data-ad-client="i-gno/re-d1234"
data-ad-host="ca-host-pub-5678">
</ins>
<script nonce="${nonce}">
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
การทดสอบ
เราขอแนะนำให้คุณทดสอบนโยบายก่อนโดยตั้งค่าส่วนหัว Content-Security-Policy-Report-Only
แทน Content-Security-Policy
ส่วนหัวจะรายงานการละเมิดแต่ยังคงอนุญาตการละเมิดดังกล่าวในหน้าเว็บ