trusty — Website Trust Platform
Cookies & Consent

วิธี Audit ปุ่ม Reject All ของธุรกิจ SaaS สตาร์ทอัพ และบริษัทเทคโนโลยี พร้อม Evidence ที่ควรเก็บ

ปุ่ม Reject All ที่กดแล้ว 'ดูเหมือน' ทำงาน กับปุ่มที่หยุดสคริปต์จริงทุกตัว เป็นคนละเรื่องกัน — นี่คือวิธี Audit ที่ทีม SaaS ใช้แยกสองอย่างนี้ออกจากกัน

📅 เผยแพร่ 24 กรกฎาคม 2569อัปเดตล่าสุด 24 กรกฎาคม 2569✍️ เขียนโดย trusty Editorial Team⏱ อ่าน 9 นาที
Two colleagues collaborate on paperwork during an office meeting.
ภาพโดย www.kaboompics.com จาก Pexels

💬 สรุปสั้น ๆ

การ Audit ปุ่ม Reject All คือการตรวจว่าเมื่อผู้ใช้งานกดปฏิเสธทั้งหมด สคริปต์ทุกตัวนอกเหนือจากที่จำเป็นต่อการทำงานหยุดทำงานจริงหรือไม่ ไม่ใช่แค่ปุ่มเปลี่ยนสถานะในหน้าจอ ทีม SaaS ควรตรวจตำแหน่งและความชัดเจนของปุ่ม ตรวจ network request ก่อนและหลังกด ทดสอบข้ามทุก subdomain และเก็บผลตรวจเป็นหลักฐานทุกรอบที่มีการอัปเดต Consent Banner

สารบัญ

ปุ่ม Reject All ที่ธุรกิจ SaaS สองรายวางไว้บน Consent Banner อาจหน้าตาเหมือนกันทุกประการ แต่ทำงานต่างกันโดยสิ้นเชิงเมื่อผู้ใช้งานกดจริง รายแรกกดแล้วสคริปต์วิเคราะห์และโฆษณาทุกตัวหยุดทำงานทันที ยืนยันได้จาก network request รายที่สองปุ่มเปลี่ยนสถานะเป็น "ปฏิเสธแล้ว" บนหน้าจอ แต่สคริปต์เดิมยังคงยิง request ต่อเนื่องเบื้องหลังเหมือนไม่มีอะไรเกิดขึ้น ความต่างนี้ตรวจไม่พบด้วยตาเปล่าจากฝั่งผู้ใช้งาน แต่ตรวจพบได้ทันทีถ้าเปิด developer tools ดู และเป็นสิ่งที่ลูกค้าองค์กรจำนวนมากเริ่มตรวจสอบเองก่อนเซ็นสัญญากับผู้ให้บริการ SaaS รายใหม่

การ Audit ปุ่ม Reject All คือการตรวจว่าเมื่อผู้ใช้งานกดปฏิเสธทั้งหมด สคริปต์ทุกตัวนอกเหนือจากที่จำเป็นต่อการทำงานหยุดทำงานจริงหรือไม่ ไม่ใช่แค่ปุ่มเปลี่ยนสถานะในหน้าจอ ทีม SaaS ควรตรวจตำแหน่งและความชัดเจนของปุ่ม ตรวจ network request ก่อนและหลังกด ทดสอบข้ามทุก subdomain และเก็บผลตรวจเป็นหลักฐานทุกรอบที่มีการอัปเดต Consent Banner

ทีม Product และ Engineering ของ SaaS มักตรวจว่า Consent Banner "แสดงผลถูกต้อง" คือมีปุ่มยอมรับ ปฏิเสธ และตั้งค่า ครบตามที่ออกแบบไว้ แต่การตรวจระดับ UI แบบนี้ไม่บอกอะไรเลยว่าปุ่ม Reject All ทำงานจริงหรือไม่ในเชิงเทคนิค ระบบจำนวนมากพัฒนาโดยแยกทีมออกแบบหน้าตากับทีมที่ผูกสคริปต์เข้ากับสถานะความยินยอมจริง เมื่อสองทีมสื่อสารกันไม่ครบ ปุ่มอาจแสดงผลถูกต้องสมบูรณ์แต่ไม่ได้เชื่อมกับ logic ที่หยุดสคริปต์เบื้องหลังเลย

สำหรับ SaaS ที่ deploy บ่อยและมีหลาย subdomain ความเสี่ยงนี้สูงกว่าเว็บไซต์ทั่วไปเพราะแต่ละทีมอาจเพิ่มสคริปต์ใหม่โดยไม่ผ่านกระบวนการตรวจสอบส่วนกลาง สคริปต์ที่เพิ่มเข้ามาทีหลังจึงมีโอกาสสูงที่จะไม่ถูกผูกกับ logic การถอนความยินยอมของปุ่ม Reject All ตั้งแต่แรก การ Audit จึงต้องแยกออกมาเป็นกระบวนการเฉพาะ ไม่ใช่ส่วนหนึ่งของการรีวิว UI ทั่วไป

เตรียมการก่อนเริ่ม Audit

ก่อนเริ่มตรวจ ให้รวบรวมรายการโดเมนและ subdomain ทั้งหมดที่แสดง Consent Banner รายชื่อสคริปต์บุคคลที่สามที่ทีมต่าง ๆ เคยติดตั้ง และเวอร์ชันปัจจุบันของ Consent Banner ที่ใช้งานอยู่ ทีมที่ควรมีส่วนร่วมอย่างน้อยคือ Engineering ที่เข้าถึงโค้ดจริงได้ Product หรือ Growth ที่รู้ว่ามีสคริปต์การตลาดใดติดตั้งอยู่บ้าง และ Privacy ที่ตัดสินความรุนแรงของสิ่งที่พบ

เอกสารที่ควรมีติดมือก่อนเริ่มตรวจ ได้แก่ แผนผังการไหลของสคริปต์แต่ละหมวดคุกกี้ (data flow) ประวัติเวอร์ชันของ Consent Banner ว่าเปลี่ยนล่าสุดเมื่อไร และรายชื่อผู้ให้บริการบุคคลที่สามทั้งหมดที่มีสัญญาอยู่ ณ ปัจจุบัน หากทีมไม่มีเอกสารเหล่านี้ ขั้นตอนแรกของ Audit จริง ๆ คือการสร้างมันขึ้นมาก่อน เพราะไม่มีทางตรวจได้ครบว่าอะไรควรหยุดทำงาน ถ้ายังไม่รู้ว่ามีสคริปต์อะไรติดตั้งอยู่บ้างทั้งหมด

ขั้นตอน Audit ปุ่ม Reject All ทีละขั้น

ขั้นที่ 1: ตรวจตำแหน่งและความชัดเจนของปุ่ม

ตรวจว่าปุ่ม Reject All อยู่ในระดับความเด่นเทียบเท่ากับปุ่มยอมรับทั้งหมด ไม่ใช่ซ่อนอยู่ในลิงก์ตัวเล็กหรือต้องกดเข้าไปอีกสองสามขั้นตอนจึงจะเจอ ปัญหานี้พบบ่อยใน SaaS ที่ใช้ CMP สำเร็จรูปแล้วปรับแต่งดีไซน์เอง จนทำให้ปุ่มปฏิเสธเสียสัดส่วนความเด่นไปโดยไม่ตั้งใจระหว่างการทำ branding

ขั้นที่ 2: ตรวจ network request ก่อนกดปุ่ม

เปิดเว็บไซต์ในโหมดไม่ระบุตัวตนหรือเบราว์เซอร์ใหม่ เปิด developer tools แท็บ network แล้วบันทึกรายการ request ทั้งหมดที่เกิดขึ้นก่อนที่ผู้ใช้งานจะตัดสินใจใด ๆ บน Consent Banner รายการนี้คือ baseline สำหรับเทียบในขั้นถัดไป สคริปต์วิเคราะห์หรือโฆษณาที่ยิง request ตั้งแต่ก่อนผู้ใช้งานเลือกอะไรเลยถือเป็นปัญหาลำดับแรกที่ต้องแก้ ไม่ว่าปุ่ม Reject All จะทำงานถูกต้องหรือไม่ก็ตาม

ขั้นที่ 3: กด Reject All แล้วตรวจ request ที่เหลืออยู่

กดปุ่ม Reject All แล้วรีโหลดหน้าเว็บ ตรวจแท็บ network อีกครั้งว่า request ไปยังผู้ให้บริการวิเคราะห์และโฆษณาที่เคยเห็นใน baseline หายไปจริงหรือไม่ ถ้ายังพบ request เดิมทำงานต่อ ให้บันทึกชื่อโดเมนปลายทางและชนิดของสคริปต์ทุกตัวที่ยังทำงานอยู่ เพราะนี่คือหลักฐานตรงที่สุดว่าปุ่มไม่ได้หยุดสคริปต์จริงตามที่แสดงผล

ขั้นที่ 4: ทดสอบข้ามทุก subdomain และหน้า landing page

ทำซ้ำขั้นที่ 2 และ 3 บนทุก subdomain ที่มีการขอความยินยอมแยกกัน โดยเฉพาะ landing page ที่ทีม Growth สร้างขึ้นเพื่อแคมเปญเฉพาะ ซึ่งมักไม่ได้ผ่านกระบวนการตรวจสอบเดียวกับเว็บแอปหลัก การกด Reject All บนเว็บแอปหลักแล้วสคริปต์หยุดจริง ไม่ได้แปลว่าการกดบน subdomain อื่นจะได้ผลเดียวกัน หากทั้งสองระบบไม่แชร์สถานะความยินยอมกัน

ขั้นที่ 5: ทดสอบการคงสถานะหลังปิดและเปิดเบราว์เซอร์ใหม่

หลังกด Reject All แล้วปิดแท็บและเปิดเว็บไซต์ใหม่อีกครั้งในเซสชันเดียวกัน ตรวจว่า Consent Banner ไม่ขึ้นซ้ำโดยไม่จำเป็น และสถานะปฏิเสธยังมีผลอยู่ ไม่ใช่รีเซ็ตกลับไปอนุญาตสคริปต์ทั้งหมดใหม่ทุกครั้งที่เปิดเซสชัน ซึ่งเป็นปัญหาที่พบได้ในระบบที่เก็บสถานะความยินยอมไว้ผิดที่ เช่น เก็บเฉพาะใน session storage แทนที่จะเก็บแบบถาวร

ขั้นที่ 6: ตรวจสคริปต์ที่โหลดผ่าน tag manager แยกจากที่โค้ดเรียกตรง

ทีม SaaS จำนวนมากใช้ tag manager กลางในการเพิ่มสคริปต์วิเคราะห์และการตลาด โดยไม่ต้องแก้โค้ดหลักทุกครั้ง ซึ่งสะดวกต่อทีม Growth แต่ก็เป็นช่องที่สคริปต์ใหม่หลุดออกไปโดยไม่ผ่านการตรวจสอบว่าผูกกับสถานะ Reject All หรือยัง ต้องตรวจแยกเป็นสองชั้น คือสคริปต์ที่โค้ดเว็บไซต์เรียกตรง กับสคริปต์ที่ tag manager โหลดเพิ่มเข้ามาเอง เพราะสคริปต์ชั้นหลังมักถูกมองข้ามเมื่อทีม Engineering ตรวจแค่ codebase หลัก

Evidence ที่ควรเก็บจากการ Audit แต่ละรอบ

  • ภาพหน้าจอ Consent Banner ที่แสดงตำแหน่งปุ่ม Reject All เทียบกับปุ่มยอมรับ
  • รายการ network request ก่อนกดปุ่ม (baseline) พร้อมชื่อโดเมนปลายทางทุกตัว
  • รายการ network request หลังกด Reject All ในทุก subdomain ที่ทดสอบ
  • ผลทดสอบการคงสถานะ หลังปิดและเปิดเบราว์เซอร์ใหม่
  • รายชื่อ finding และระดับความรุนแรง พร้อมผู้รับผิดชอบแก้ไขแต่ละรายการ
  • บันทึกการแก้ไข ว่าแก้เมื่อไรและตรวจซ้ำแล้วหรือยัง

สถานการณ์ตัวอย่างจริง

กรณีที่หนึ่ง — landing page แคมเปญไม่ผูกกับระบบกลาง: ทีม Growth ของ SaaS รายหนึ่งสร้าง landing page ใหม่สำหรับแคมเปญโฆษณาโดยใช้ template แยกจาก codebase หลัก และไม่ได้เชื่อมกับระบบ Consent Management เดียวกัน ผู้ใช้งานที่กด Reject All บน landing page นี้จึงยังถูกสคริปต์โฆษณาติดตามต่อ ทีมพบปัญหานี้จากการทำ Audit ตามขั้นที่ 4 ที่ตรวจแยกทุก subdomain แทนที่จะตรวจแค่เว็บแอปหลัก

กรณีที่สอง — ปุ่มทำงานถูกแต่ดีไซน์บดบังความเด่น: บริษัทเทคโนโลยีแห่งหนึ่งผ่านการตรวจเชิงเทคนิคทุกข้อ สคริปต์หยุดทำงานจริงหลังกด Reject All แต่เมื่อทีมออกแบบใหม่ปรับสีปุ่มให้กลืนกับพื้นหลังเพื่อความสวยงาม ปุ่มยอมรับกลับเด่นกว่าปุ่มปฏิเสธอย่างชัดเจน ทีม Privacy ตรวจพบระหว่างรีวิว UI ประจำไตรมาสและขอให้ปรับสัดส่วนความเด่นให้เท่ากันก่อนปล่อยเวอร์ชันใหม่

กรณีที่สาม — สคริปต์จาก tag manager หลุดผ่านการตรวจสอบ: ทีม Growth ของ SaaS อีกรายเพิ่มปิกเซลติดตามแคมเปญใหม่ผ่าน tag manager กลางเพื่อทดสอบแคมเปญระยะสั้น โดยไม่ได้แจ้งทีม Engineering เพราะคิดว่าเป็นการเปลี่ยนแปลงเล็กน้อยที่ไม่ต้องผ่านกระบวนการอนุมัติ ปิกเซลตัวนี้ไม่ได้ถูกผูกกับ logic ของปุ่ม Reject All จึงยังทำงานต่อแม้ผู้ใช้งานจะกดปฏิเสธแล้ว ทีมพบปัญหาจากขั้นที่ 6 ที่แยกตรวจสคริปต์จาก tag manager ออกจากโค้ดหลักโดยเฉพาะ และหลังจากนั้นได้กำหนดกฎใหม่ว่าสคริปต์ใดก็ตามที่เพิ่มผ่าน tag manager ต้องผ่านการตรวจสอบสถานะความยินยอมก่อนเปิดใช้งานจริงเสมอ

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

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

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

ความถี่ที่เหมาะสมและการตรวจแบบย่อระหว่างรอบใหญ่

การ Audit เต็มรูปแบบทั้งหกขั้นตอนไม่จำเป็นต้องทำทุกเดือน สำหรับ SaaS ส่วนใหญ่ การตรวจเต็มรูปแบบปีละครั้งเพียงพอ หากมีการตรวจแบบย่อคั่นระหว่างรอบด้วย การตรวจแบบย่อควรครอบคลุมอย่างน้อยขั้นที่ 2 และ 3 คือเปรียบเทียบ network request ก่อนและหลังกด Reject All บนหน้าเว็บหลัก และควรทำทุกครั้งที่มีเหตุการณ์ต่อไปนี้เกิดขึ้น: เปลี่ยนผู้ให้บริการ CMP เปลี่ยนดีไซน์ Consent Banner แม้เพียงเล็กน้อย เพิ่มสคริปต์บุคคลที่สามใหม่ผ่าน tag manager หรือเปิด subdomain ใหม่สำหรับผลิตภัณฑ์หรือแคมเปญ

ทีมที่ทำงานแบบ agile และ deploy รายสัปดาห์ ควรพิจารณาใส่การตรวจแบบย่อไว้เป็นหนึ่งในเกณฑ์ผ่านก่อนปล่อยเวอร์ชันใหม่ (release checklist) โดยเฉพาะเมื่อ pull request มีการแก้ไขที่เกี่ยวข้องกับ tag manager หรือไฟล์ config ของ Consent Banner การใส่เกณฑ์นี้เข้าไปในกระบวนการ release ทำให้ปัญหาถูกจับตั้งแต่ก่อนขึ้น production แทนที่จะรอให้พบในการ Audit เต็มรูปแบบครั้งถัดไปซึ่งอาจห่างกันหลายเดือน

ต่างกันแค่ไหนระหว่างทีมที่ Audit เป็นระบบกับทีมที่ไม่ทำ

ทีมที่ทำ Audit ปุ่ม Reject All เป็นรอบสม่ำเสมอมักรับมือกับคำขอตรวจสอบจากลูกค้าองค์กรได้ภายในหนึ่งถึงสองวันทำการ เพราะมีรายงานผลตรวจล่าสุดพร้อม Evidence ให้หยิบส่งได้ทันที ขณะที่ทีมที่ไม่เคย Audit อย่างเป็นระบบต้องเริ่มไล่ตรวจสคริปต์ทั้งหมดใหม่ตั้งแต่ต้นทันทีที่ถูกถาม ซึ่งมักใช้เวลาหลายสัปดาห์และมีความเสี่ยงที่จะพบปัญหาสะสมหลายจุดพร้อมกัน ทำให้ต้องแก้ไขเร่งด่วนขณะที่ดีลกับลูกค้ากำลังรอคำตอบอยู่

ผลกระทบไม่ได้จำกัดแค่ความเร็วในการตอบลูกค้า ทีมที่ปล่อยให้ปุ่ม Reject All ไม่ทำงานจริงเป็นเวลานานจะสะสมช่วงเวลาที่ไม่มีหลักฐานยืนยันการเคารพการปฏิเสธของผู้ใช้งาน ซึ่งเป็นช่องว่างที่ต้องอธิบายย้อนหลังหากมีข้อร้องเรียนเกิดขึ้นในช่วงนั้นพอดี การ Audit เป็นรอบจึงไม่ใช่แค่เรื่องความเรียบร้อยของระบบ แต่เป็นการลดความเสี่ยงสะสมที่มองไม่เห็นในแต่ละวัน

ทำ Audit ให้เป็นวงจรของทีม ไม่ใช่งานตรวจครั้งเดียว

ธุรกิจ SaaS ที่ deploy บ่อยควรกำหนดให้การ Audit ปุ่ม Reject All เป็นส่วนหนึ่งของ checklist ก่อน release ทุกครั้งที่มีการเปลี่ยน Consent Banner หรือเพิ่มสคริปต์บุคคลที่สามใหม่ และทำ Audit เต็มรูปแบบอย่างน้อยปีละครั้งโดยมีเจ้าของงานชัดเจน สำหรับสคริปต์ที่ต้องตรวจซ้ำบ่อย การใช้เครื่องมือสแกนอัตโนมัติ เช่น เครื่องมือสแกนเว็บไซต์ฟรีของ trusty ช่วยชี้จุดที่ควรตรวจลึกด้วยมือได้เร็วขึ้น และควรอ่านเพิ่มเติมที่ คู่มือปุ่ม Reject All สำหรับธุรกิจ SaaS เพื่อทำความเข้าใจหลักการออกแบบตั้งแต่ต้น รวมถึงหัวข้ออื่นในหมวด Cookies & Consent

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

  • ตรวจแค่ว่าปุ่มเปลี่ยนสถานะบนหน้าจอ ไม่ตรวจ network request ว่าสคริปต์หยุดจริง
  • ลืมทดสอบ landing page หรือ subdomain ที่ทีม Growth สร้างแยกจาก codebase หลัก
  • ปรับดีไซน์ปุ่มภายหลังโดยไม่ทบทวนสัดส่วนความเด่นเทียบกับปุ่มยอมรับ
  • เก็บสถานะความยินยอมผิดที่ ทำให้รีเซ็ตกลับไปอนุญาตทั้งหมดเมื่อเปิดเซสชันใหม่
  • ไม่มีเจ้าของงาน Audit ชัดเจน ทำให้การตรวจรอบถัดไปไม่เกิดขึ้น

สรุป

การ Audit ปุ่ม Reject All ที่แท้จริงต้องตรวจลึกกว่าการดูว่าปุ่มเปลี่ยนสถานะบนหน้าจอ ทีม SaaS ต้องตรวจตำแหน่งและความเด่นของปุ่ม ตรวจ network request ก่อนและหลังกดในทุก subdomain ทดสอบการคงสถานะข้ามเซสชัน และเก็บ Evidence ทุกรอบเป็นระบบ เพื่อให้ตอบได้ทันทีเมื่อลูกค้าองค์กรหรือทีม security review ขอดูหลักฐาน การทำ Audit เป็นรอบสม่ำเสมอควบคู่กับ checklist ก่อน release คือทางเดียวที่ทำให้ปุ่มที่ "ดูเหมือนทำงาน" กลายเป็นปุ่มที่ "พิสูจน์ได้ว่าทำงานจริง"

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

แนวปฏิบัติและประกาศที่เกี่ยวข้องกับการจัดการความยินยอมภายใต้ PDPA ควรอ้างอิงจาก สำนักงานคณะกรรมการคุ้มครองข้อมูลส่วนบุคคล (PDPC) โดยตรง บทความนี้อธิบายแนวปฏิบัติเชิงเทคนิคเพื่อการตรวจสอบภายใน ไม่ใช่การตีความข้อกฎหมายแทนหน่วยงานกำกับดูแล

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

ควร Audit ปุ่ม Reject All บ่อยแค่ไหนสำหรับธุรกิจ SaaS

ควรทำ Audit เต็มรูปแบบอย่างน้อยปีละครั้ง และตรวจแบบย่อทุกครั้งที่เปลี่ยน Consent Banner หรือเพิ่มสคริปต์บุคคลที่สามใหม่ ธุรกิจ SaaS ที่ deploy บ่อยควรใส่การตรวจแบบย่อไว้ใน checklist ก่อน release ด้วย

ทำไมปุ่มที่เปลี่ยนสถานะถูกต้องถึงยังอาจไม่ผ่านการ Audit

เพราะการเปลี่ยนสถานะบนหน้าจอกับการหยุดสคริปต์เบื้องหลังเป็นคนละระบบกัน หากทีมออกแบบและทีมที่ผูกสคริปต์เข้ากับ logic ความยินยอมสื่อสารกันไม่ครบ ปุ่มอาจแสดงผลถูกต้องแต่สคริปต์ยังทำงานต่อ ต้องตรวจ network request จริงจึงจะยืนยันได้

ต้องตรวจ subdomain และ landing page ทุกอันจริงหรือไม่

ควรตรวจทุกจุดที่มีการขอความยินยอมแยกกัน โดยเฉพาะ landing page แคมเปญที่ทีม Growth สร้างเอง เพราะมักไม่ได้ผ่านกระบวนการตรวจสอบเดียวกับเว็บแอปหลัก และเป็นจุดที่พบปัญหาบ่อยที่สุดจากการ Audit จริง

ถ้า Audit แล้วพบว่าปุ่ม Reject All ไม่หยุดสคริปต์บางตัว ควรทำอย่างไรก่อน

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

อ่านต่อในหัวข้อเดียวกัน

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

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

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