trusty — Website Trust Platform
Website Security

Content Security Policy (CSP) คืออะไร? คู่มือสำหรับร้านค้าออนไลน์และ E-commerce

Content Security Policy (CSP) คืออะไร สำหรับร้านค้าออนไลน์และ E-commerce — หลักการ ขั้นตอนตรวจสอบ และข้อผิดพลาดที่พบบ่อย สำหรับเจ้าของร้านและทีม Performance Marketing

📅 เผยแพร่ 16 กรกฎาคม 2569อัปเดตล่าสุด 12 สิงหาคม 2569✍️ เขียนโดย trusty Editorial Team⏱ อ่าน 9 นาที
A person holds a credit card near a laptop for online shopping.
ภาพโดย Joshua Woroniecki จาก Pexels

💬 สรุปสั้น ๆ

สำหรับร้านค้าออนไลน์ Content Security Policy คือแนวป้องกันหลักต่อการโจมตีแบบ Magecart ที่แฮกเกอร์ฝังสคริปต์ขโมยข้อมูลบัตรเครดิตผ่านหน้าชำระเงิน เพราะร้านค้าออนไลน์มักฝัง Payment Gateway และ Pixel การตลาดจากผู้ให้บริการภายนอกจำนวนมาก บทความนี้สรุปโดเมนที่ต้อง Whitelist วิธีทดสอบด้วยโหมด Report-Only โดยไม่ทำให้หน้า Checkout พังกลางแคมเปญ และการอ่าน CSP Violation Report เพื่อจับสัญญาณสคริปต์แปลกปลอม

ปี 2018 บริษัทสายการบิน British Airways ถูกแฮกเกอร์ฝังสคริปต์ขโมยข้อมูลบัตรเครดิตของลูกค้ากว่าสี่แสนรายการผ่านหน้าชำระเงิน โดยสคริปต์ที่ถูกแก้ไขเพียงไม่กี่บรรทัดทำงานเงียบๆ อยู่นานหลายสัปดาห์ก่อนถูกพบ เหตุการณ์แบบนี้เรียกกันในวงการว่า Magecart-style Attack และเป็นภัยที่ร้านค้าออนไลน์ทุกขนาดเสี่ยงเจอ เพราะหน้าชำระเงินของร้านค้าออนไลน์มักฝังสคริปต์จากผู้ให้บริการภายนอกจำนวนมาก ทั้ง Payment Gateway ตัวนับผู้เข้าชม และ Pixel การตลาด ยิ่งมีสคริปต์ภายนอกมากเท่าไหร่ พื้นที่ที่แฮกเกอร์จะแทรกโค้ดอันตรายเข้ามาก็ยิ่งกว้างขึ้นเท่านั้น

บทความนี้โฟกัสเฉพาะบทบาทของ Content Security Policy (CSP) ในการป้องกันการฝังสคริปต์อันตรายบนร้านค้าออนไลน์ และวิธีตั้งค่าโดยไม่ทำให้ระบบชำระเงินหรือเครื่องมือการตลาดที่ธุรกิจพึ่งพาอยู่พังไปด้วย ไม่ใช่คู่มือ CSP ทั่วไป

ทำไมร้านค้าออนไลน์เป็นเป้าของการฝัง Script ขโมยข้อมูลบัตร

ร้านค้าออนไลน์มีจุดที่ล่อตาแฮกเกอร์มากกว่าเว็บไซต์ทั่วไปตรงที่หน้าชำระเงินมีข้อมูลบัตรเครดิตไหลผ่านโดยตรง แม้ร้านส่วนใหญ่จะใช้ Payment Gateway ที่ได้มาตรฐาน PCI DSS ก็ตาม แต่สคริปต์บุคคลที่สามอื่นที่ฝังอยู่ในหน้าเดียวกัน เช่น สคริปต์วิเคราะห์พฤติกรรมผู้ใช้งานหรือ Chat Widget หากถูกแฮกจากต้นทาง อาจถูกใช้เป็นช่องทางแทรกโค้ดที่ดักจับข้อมูลจากฟอร์มกรอกบัตรก่อนที่ข้อมูลจะถูกส่งไปยัง Payment Gateway จริง โดยที่ร้านค้าอาจไม่รู้ตัวเลยเพราะหน้าเว็บยังแสดงผลปกติทุกอย่าง CSP ที่ตั้งค่าถูกต้องช่วยจำกัดว่ามีเพียงโดเมนที่อนุญาตเท่านั้นที่รันสคริปต์หรือส่งข้อมูลออกจากหน้าเว็บได้ ทำให้สคริปต์แปลกปลอมที่พยายามส่งข้อมูลไปยังปลายทางนอกรายการถูกเบราว์เซอร์บล็อกทันที

Directive ที่ต้องตั้งอย่างระมัดระวังเมื่อมี Payment Gateway และ Pixel จำนวนมาก

สำหรับร้านค้าออนไลน์ Directive ที่ส่งผลกระทบสูงสุดหากตั้งผิดคือ script-src ที่ควบคุมว่าสคริปต์จากโดเมนใดรันได้ frame-src ที่ควบคุม iframe ของหน้าชำระเงินจาก Payment Gateway และ connect-src ที่ควบคุมปลายทางที่หน้าเว็บส่งข้อมูลออกไปได้ เช่น Endpoint ของ Pixel การตลาด การตั้ง frame-src ผิดพลาดเพียงโดเมนเดียวอาจทำให้หน้าต่างกรอกบัตรของ Payment Gateway ไม่แสดงผลเลย ลูกค้าจ่ายเงินไม่ได้ทั้งเว็บ ขณะที่การตั้ง connect-src แคบเกินไปอาจทำให้ Pixel การตลาดส่งข้อมูล Conversion ไม่ได้ ทีมจึงต้องไล่รายการโดเมนที่ใช้จริงให้ครบก่อนบังคับใช้ CSP แบบเข้มงวด

รายชื่อโดเมนที่ร้านค้าออนไลน์ไทยมักต้อง Whitelist

จากประสบการณ์ตรวจสอบร้านค้าออนไลน์ในไทย โดเมนที่มักต้องอยู่ใน Whitelist ของ CSP ได้แก่ โดเมนของ Payment Gateway ที่ใช้งาน เช่น Omise หรือ 2C2P โดเมนของ Google Tag Manager และ Google Analytics สำหรับ GA4 โดเมนของ Meta Pixel และ TikTok Pixel สำหรับแคมเปญโฆษณา โดเมนของ LINE สำหรับปุ่มแชทหรือ LINE Login และโดเมน CDN ที่ใช้โหลดรูปภาพสินค้าความละเอียดสูง ทีมควรทำรายการนี้เป็นเอกสารกลางที่อัปเดตทุกครั้งที่เพิ่มเครื่องมือใหม่ ไม่ใช่ให้แต่ละคนจำเอาเองว่าร้านใช้เครื่องมืออะไรบ้าง เพราะเมื่อทีมการตลาดเพิ่มพิกเซลใหม่โดยไม่แจ้งทีมเทคนิค CSP ที่ตั้งไว้เดิมจะบล็อกพิกเซลนั้นโดยอัตโนมัติ

ทดสอบ CSP โดยไม่ทำให้หน้า Checkout พังกลางแคมเปญ

วิธีที่ปลอดภัยที่สุดคือเริ่มด้วยโหมด Content-Security-Policy-Report-Only ก่อนเสมอ เพื่อดูว่ามีสคริปต์หรือปลายทางใดที่จะถูกบล็อกหากบังคับใช้จริง โดยเฉพาะร้านค้าออนไลน์ที่มีแคมเปญใหญ่หมุนเวียนตลอดปี ควรหลีกเลี่ยงการเปลี่ยนจาก Report-Only ไปเป็นบังคับใช้จริงในช่วงใกล้แคมเปญสำคัญ เพราะถ้ามีโดเมนตกหล่นจากรายการ Whitelist หน้าชำระเงินอาจใช้งานไม่ได้ในช่วงที่ทราฟฟิกสูงที่สุดพอดี ช่วงเวลาที่เหมาะสมกว่าคือเปลี่ยนแปลงในช่วงทราฟฟิกต่ำและมีทีมเทคนิคพร้อมตรวจสอบทันทีหากเกิดปัญหา ไม่ใช่ตั้งแล้วปล่อยผ่านไปโดยไม่มีใครเฝ้าดู

สำหรับร้านที่มีทีมพัฒนาในบริษัท ควรมีสภาพแวดล้อม Staging ที่จำลองสภาพจริงให้ใกล้เคียงที่สุด รวมถึงสคริปต์บุคคลที่สามทั้งหมดที่ใช้งานจริงบน Production เพื่อทดสอบ CSP ก่อนนำขึ้นจริง เพราะบางปัญหาจะไม่ปรากฏจนกว่าจะมีสคริปต์ทั้งหมดทำงานพร้อมกันในสภาพแวดล้อมที่ใกล้เคียงลูกค้าจริงที่สุด การทดสอบบน Staging ที่ไม่มีสคริปต์การตลาดครบเท่า Production มักทำให้ทีมมั่นใจผิดๆ ว่า CSP พร้อมใช้งานจริงแล้ว ทั้งที่ยังมีจุดบกพร่องซ่อนอยู่ โดยเฉพาะช่วงก่อนแคมเปญใหญ่ที่ทีมมักเพิ่มสคริปต์ตัวนับเวลาถอยหลังหรือป๊อปอัปแจ้งสต๊อกสินค้าเข้ามาชั่วคราว ควรทดสอบสคริปต์เหล่านี้บน Staging ร่วมกับ CSP ก่อนเสมอ แม้จะเป็นโค้ดที่ใช้แค่ไม่กี่วันก็ตาม

ตรวจสอบ CSP Violation Report เพื่อจับสัญญาณสคริปต์แปลกปลอมก่อนเกิดเหตุจริง

เมื่อกำหนด report-uri หรือ report-to ให้ส่งรายงานการละเมิด CSP ไปยัง Endpoint ที่ทีมตรวจสอบได้ รายงานเหล่านี้ไม่ได้มีประโยชน์แค่ตอนทดสอบเท่านั้น แต่ยังเป็นระบบเตือนภัยล่วงหน้าในระยะยาว หากจู่ๆ มีรายงานการละเมิดจากโดเมนที่ไม่เคยเห็นมาก่อนพยายามรันสคริปต์บนหน้าชำระเงิน นั่นอาจเป็นสัญญาณว่ามีการพยายามฝังสคริปต์อันตรายเข้ามาในเว็บ ทีมความปลอดภัยควรตรวจสอบรายงานเหล่านี้เป็นประจำ ไม่ใช่เก็บไว้เฉยๆ โดยไม่มีใครดู เพราะเป้าหมายของ CSP ไม่ใช่แค่ป้องกัน แต่ยังช่วยตรวจจับความผิดปกติได้เร็วกว่าการรอให้ลูกค้าร้องเรียนเรื่องบัตรถูกขโมยข้อมูล

พร้อมตรวจสอบความน่าเชื่อถือของเว็บไซต์คุณหรือยัง?

ทดลองใช้งาน trusty ฟรี ไม่ต้องใช้บัตรเครดิต เริ่มสแกนได้ทันที

ทดลองใช้งานระบบฟรี

Marketplace ปลั๊กอินและธีมสำเร็จรูป: จุดที่ CSP มักถูกมองข้าม

ร้านค้าออนไลน์จำนวนมากไม่ได้พัฒนาเว็บเองทั้งหมด แต่ใช้แพลตฟอร์มสำเร็จรูปอย่าง Shopify หรือ WooCommerce ร่วมกับปลั๊กอินเสริมหลายสิบตัวสำหรับฟีเจอร์ต่างๆ เช่น รีวิวสินค้า แชทสด หรือระบบแนะนำสินค้าอัตโนมัติ แต่ละปลั๊กอินมักฝังสคริปต์จากโดเมนของตัวเองเพิ่มเข้ามาโดยที่เจ้าของร้านไม่รู้ตัว เพราะการติดตั้งทำได้ง่ายเพียงไม่กี่คลิกผ่านหน้า Admin โดยไม่ต้องแตะโค้ดเลย ปัญหาคือเมื่อร้านตั้ง CSP ไว้แล้วติดตั้งปลั๊กอินใหม่ทีหลัง ปลั๊กอินนั้นอาจใช้งานไม่ได้ทันทีเพราะโดเมนของมันไม่ได้อยู่ใน Whitelist และเจ้าของร้านที่ไม่มีพื้นฐานด้านเทคนิคอาจไม่เข้าใจว่าทำไมฟีเจอร์ที่เพิ่งติดตั้งถึงไม่ทำงาน

แนวทางที่ช่วยได้คือกำหนดขั้นตอนว่าทุกครั้งที่จะติดตั้งปลั๊กอินหรือแอปเสริมใหม่บนแพลตฟอร์ม ต้องตรวจสอบก่อนว่าปลั๊กอินนั้นต้องการโดเมนใดบ้าง แล้วปรับ CSP ให้รองรับก่อนเปิดใช้งานจริง ไม่ใช่ติดตั้งไปก่อนแล้วค่อยแก้ปัญหาทีหลัง สำหรับร้านที่ใช้ Shopify ควรตรวจสอบด้วยว่าธีมที่ซื้อมาจาก Marketplace ภายนอกมีการฝังสคริปต์ติดตามที่เจ้าของธีมใส่มาเองหรือไม่ เพราะบางธีมอาจมีสคริปต์วิเคราะห์ของผู้พัฒนาธีมติดมาด้วยโดยไม่ได้แจ้งให้ทราบชัดเจน

การรับมือกับสคริปต์ Third-Party ที่เปลี่ยนแปลงพฤติกรรมโดยไม่แจ้งล่วงหน้า

ความท้าทายอีกอย่างของร้านค้าออนไลน์คือสคริปต์บุคคลที่สามหลายตัวสามารถเปลี่ยนพฤติกรรมได้จากฝั่งผู้ให้บริการเองโดยที่ร้านไม่ต้องแก้โค้ดใดๆ เช่น ผู้ให้บริการ Pixel การตลาดอาจเพิ่ม Endpoint ใหม่สำหรับเก็บข้อมูลเพิ่มเติมโดยอัตโนมัติ ซึ่งหาก CSP ตั้งไว้แคบเกินไปจนไม่ครอบคลุม Endpoint ใหม่ ข้อมูล Conversion บางส่วนอาจหายไปโดยที่ทีมการตลาดไม่รู้สาเหตุ เพราะไม่มีข้อความ Error ใดๆ ปรากฏให้เห็นบนหน้าเว็บ มีเพียงรายงาน CSP Violation ที่บันทึกไว้เงียบๆ เท่านั้น

สถานการณ์แบบนี้พบได้บ่อยเมื่อร้านค้าออนไลน์เปลี่ยนแพลตฟอร์มโฆษณาหรือเพิ่มช่องทางใหม่ เช่น เริ่มลงโฆษณาบน TikTok เป็นครั้งแรกหลังจากที่ CSP ถูกตั้งไว้แต่เดิมโดยรองรับเฉพาะ Meta และ Google ทีมการตลาดที่ติดตั้ง TikTok Pixel เองผ่าน Tag Manager อาจไม่รู้เลยว่าต้องแจ้งทีมเทคนิคให้ปรับ CSP ก่อน และมักไม่มีใครสังเกตจนกว่าจะพบว่าตัวเลข Conversion จาก TikTok ต่ำผิดปกติเมื่อเทียบกับ Ad Spend ที่ใช้ไป

ด้วยเหตุนี้ ทีมเทคนิคของร้านค้าออนไลน์จึงควรตรวจสอบ CSP Violation Report เป็นประจำไม่ใช่แค่ช่วงทดสอบครั้งแรก แต่ควรทำเป็นงานประจำรายเดือนหรือรายไตรมาส เพื่อจับสัญญาณเมื่อผู้ให้บริการภายนอกเปลี่ยนแปลงพฤติกรรมและปรับ Whitelist ให้ทันท่วงที ก่อนที่ปัญหาจะสะสมจนกระทบข้อมูลการตลาดในระยะยาว ร้านที่มีทีมการตลาดหลายคนดูแลหลายแพลตฟอร์มพร้อมกัน ควรกำหนดให้มีผู้รับผิดชอบหลักคนเดียวคอยรวบรวมรายการเครื่องมือติดตามทั้งหมดที่ใช้งานอยู่ แล้วส่งต่อให้ทีมเทคนิคตรวจสอบ CSP เป็นระยะ แทนที่จะให้แต่ละคนติดตั้งเครื่องมือของตัวเองแยกกันโดยไม่มีจุดรวมศูนย์ที่มองเห็นภาพรวมทั้งหมด

เช็กลิสต์ปฏิบัติ

  • ทำรายการโดเมน Payment Gateway, Pixel การตลาด และ CDN ที่ร้านใช้จริงทั้งหมดก่อนตั้ง CSP แบบเข้มงวด
  • เริ่มด้วยโหมด Report-Only เสมอ และหลีกเลี่ยงการเปลี่ยนไปบังคับใช้จริงในช่วงใกล้แคมเปญใหญ่
  • ตั้งค่า frame-src ให้ครอบคลุม iframe ของ Payment Gateway ทุกตัวที่ใช้ในหน้าชำระเงิน
  • กำหนด report-uri หรือ report-to แล้วตรวจสอบ CSP Violation Report เป็นประจำเพื่อจับสัญญาณสคริปต์แปลกปลอม
  • แจ้งทีมเทคนิคทุกครั้งที่ทีมการตลาดจะเพิ่ม Pixel หรือเครื่องมือติดตามใหม่ ก่อนนำไปใช้งานจริง

ข้อผิดพลาดที่พบบ่อย

  • บังคับใช้ CSP แบบเข้มงวดทันทีโดยไม่ผ่านโหมด Report-Only ทำให้หน้าชำระเงินพังโดยไม่รู้ตัวล่วงหน้า
  • เปลี่ยนแปลงค่า CSP ในช่วงใกล้แคมเปญใหญ่ที่มีทราฟฟิกสูง โดยไม่มีทีมเฝ้าตรวจสอบทันที
  • ทีมการตลาดเพิ่ม Pixel หรือเครื่องมือติดตามใหม่โดยไม่แจ้งทีมเทคนิค ทำให้ CSP บล็อกเครื่องมือนั้นโดยไม่มีใครรู้สาเหตุ
  • ไม่ตรวจสอบ CSP Violation Report เลยหลังตั้งค่าเสร็จ ทำให้พลาดสัญญาณเตือนภัยล่วงหน้าจากสคริปต์แปลกปลอม

สรุป

สำหรับร้านค้าออนไลน์และ E-commerce Content Security Policy ไม่ใช่แค่ Header ด้านความปลอดภัยทั่วไป แต่เป็นแนวป้องกันสำคัญต่อการโจมตีแบบ Magecart ที่มุ่งขโมยข้อมูลบัตรเครดิตจากหน้าชำระเงินโดยตรง การตั้งค่าที่รอบคอบพร้อมทำรายการโดเมนที่ใช้จริง ทดสอบด้วยโหมด Report-Only ก่อนเสมอ และตรวจสอบรายงานการละเมิดอย่างต่อเนื่อง ช่วยให้ร้านปลอดภัยขึ้นโดยไม่กระทบยอดขายหรือข้อมูลการตลาดที่ทีมพึ่งพาอยู่ทุกวัน

ดูแนวทางสำหรับอุตสาหกรรมอื่นเพิ่มเติมได้ที่ SaaS และ Enterprise หรือดูภาพรวมหมวดหมู่ทั้งหมดได้ที่ website-security

แหล่งข้อมูลอ้างอิง

คำถามที่พบบ่อย

Magecart คืออะไร และ CSP ช่วยป้องกันได้อย่างไร

Magecart คือรูปแบบการโจมตีที่แฮกเกอร์ฝังสคริปต์ขโมยข้อมูลบัตรเครดิตลงในหน้าชำระเงินของร้านค้าออนไลน์ มักผ่านสคริปต์บุคคลที่สามที่ถูกแฮกจากต้นทาง CSP ช่วยจำกัดว่ามีเพียงโดเมนที่อนุญาตเท่านั้นที่รันสคริปต์หรือส่งข้อมูลออกจากหน้าเว็บได้ ทำให้สคริปต์แปลกปลอมถูกเบราว์เซอร์บล็อกทันที

ร้านค้าออนไลน์ต้อง Whitelist โดเมนอะไรบ้างใน CSP

โดยทั่วไปต้องรวมโดเมนของ Payment Gateway เช่น Omise หรือ 2C2P, Google Tag Manager และ GA4, Meta Pixel, TikTok Pixel, LINE สำหรับปุ่มแชทหรือ Login และโดเมน CDN ที่ใช้โหลดรูปสินค้า ควรทำเป็นเอกสารกลางที่อัปเดตทุกครั้งที่เพิ่มเครื่องมือใหม่

ตั้ง CSP แล้วทำไม Payment Gateway ใช้งานไม่ได้

มักเกิดจากไม่ได้ใส่โดเมนของ Payment Gateway ไว้ใน frame-src ซึ่งควบคุม iframe ของหน้ากรอกบัตร การตั้งค่าผิดพลาดเพียงโดเมนเดียวอาจทำให้หน้าต่างกรอกบัตรไม่แสดงผลเลยและลูกค้าจ่ายเงินไม่ได้ทั้งเว็บ

ควรเปิด CSP Report-Only ตอนไหนถึงปลอดภัยที่สุดสำหรับร้านค้าออนไลน์

ควรเปลี่ยนจาก Report-Only ไปบังคับใช้จริงในช่วงทราฟฟิกต่ำและมีทีมเทคนิคพร้อมตรวจสอบทันที ไม่ควรเปลี่ยนใกล้ช่วงแคมเปญใหญ่ เพราะถ้ามีโดเมนตกหล่นจากรายการ Whitelist หน้าชำระเงินอาจใช้งานไม่ได้ในช่วงที่ทราฟฟิกสูงที่สุดพอดี

CSP Violation Report บอกอะไรได้บ้างเกี่ยวกับสคริปต์อันตราย

รายงานการละเมิดที่ส่งไปยัง report-uri หรือ report-to ช่วยให้ทีมเห็นว่ามีโดเมนแปลกปลอมพยายามรันสคริปต์บนหน้าเว็บหรือไม่ หากพบรายงานจากโดเมนที่ไม่เคยเห็นมาก่อนพยายามทำงานบนหน้าชำระเงิน นั่นอาจเป็นสัญญาณเตือนภัยล่วงหน้าของการโจมตีที่ต้องตรวจสอบทันที

เนื้อหานี้จัดทำขึ้นเพื่อให้ข้อมูลทั่วไปเท่านั้น ไม่ถือเป็นคำแนะนำทางกฎหมาย กรุณาปรึกษาผู้เชี่ยวชาญด้านกฎหมายหรือ Data Protection Officer ของหน่วยงานท่านก่อนนำไปปฏิบัติจริง

พร้อมตรวจสอบความน่าเชื่อถือของเว็บไซต์คุณหรือยัง?

ทดลองใช้งาน trusty ฟรี ไม่ต้องใช้บัตรเครดิต เริ่มสแกนได้ทันที