กลับไปยังบล็อก
วิศวกรรม เผยแพร่ 27.08.2026 ใช้เวลาอ่าน 1 นาที

มี CAPTCHA – แต่ไม่ได้ป้องกันอะไร

การเห็นวิดเจ็ต reCAPTCHA, hCaptcha หรือ Turnstile ไม่ได้บอกมากนักว่าแบบฟอร์มมีการป้องกันหรือไม่ ต่อไปนี้คือการตั้งค่าผิดที่พบบ่อยและวิธีตรวจแบบฟอร์มของตนเองภายในไม่กี่นาที

เจ้าของเว็บไซต์จำนวนมากเพิ่ม CAPTCHA ในแบบฟอร์มติดต่อ เห็นป้ายเล็ก ๆ หรือช่องทำเครื่องหมายปรากฏ แล้วคิดว่าปัญหาสแปมจบแล้ว แต่ข้อความขยะยังเข้ามา บ่อยครั้งตัว CAPTCHA ไม่ได้มีปัญหา เพียงแต่ไม่ได้เชื่อมต่อกับสิ่งใดที่หยุดบอตได้ บทความนี้อธิบายกรณีทั่วไปที่ทำให้ reCAPTCHA, hCaptcha และ Cloudflare Turnstile กลายเป็นของตกแต่ง และวิธีตรวจแบบฟอร์มของตนเอง

การป้องกันเกิดขึ้นจริงที่ไหน

บริการทั้งสามทำงานด้วยหลักการเดียวกัน สคริปต์ในเบราว์เซอร์ตรวจสอบแล้วส่งโทเค็นให้แบบฟอร์ม ซึ่งเป็นข้อความสั้น ๆ ที่บอกว่า “ผู้เยี่ยมชมนี้ผ่านแล้ว” โทเค็นเดินทางไปยังเซิร์ฟเวอร์พร้อมข้อมูลแบบฟอร์ม การตัดสินใจจริงเกิดขึ้นที่นั่นเท่านั้น: เซิร์ฟเวอร์ส่งโทเค็นพร้อมคีย์ลับให้ผู้ให้บริการและได้รับคำตอบกลับว่าสำเร็จหรือล้มเหลว และสำหรับ reCAPTCHA v3 จะมีคะแนนด้วย หากขาดข้อใดในห่วงโซ่นี้ วิดเจ็ตยังดูปกติดี แต่บอตที่ส่งตรงไปยังตัวประมวลผลแบบฟอร์มจะผ่านได้ทันที

ห่วงโซ่ที่ CAPTCHA ต้องพึ่งพา
1โหลดสคริปต์
สคริปต์ของผู้ให้บริการถูกโหลดและได้รับอนุญาตให้ทำงานบนหน้าแบบฟอร์ม
2ออกโทเค็น
เบราว์เซอร์ได้รับโทเค็นอายุสั้นที่ใช้ได้เพียงครั้งเดียว
3ส่งโทเค็น
โทเค็นถูกส่งไปยังเซิร์ฟเวอร์พร้อมช่องข้อมูลแบบฟอร์ม
4เซิร์ฟเวอร์ตรวจสอบ
เซิร์ฟเวอร์ตรวจโทเค็นกับผู้ให้บริการโดยใช้คีย์ลับ
5เซิร์ฟเวอร์ตัดสินใจ
ปฏิเสธการส่งหากไม่ได้คำตอบเชิงบวก และสำหรับ v3 ต้องมีคะแนนสูงพอด้วย
มีการป้องกันก็ต่อเมื่อทุกขั้นตอนทำงาน และขั้นตอนที่ชี้ขาดเกิดขึ้นบนเซิร์ฟเวอร์ซึ่งมองไม่เห็น

คีย์ทดสอบที่ปล่อยทุกอย่างผ่าน

Google, hCaptcha และ Cloudflare เผยแพร่คีย์ทดสอบพิเศษเพื่อให้นักพัฒนารันการทดสอบอัตโนมัติโดยไม่ต้องแก้ปริศนา เมื่อใช้คีย์ลับทดสอบที่ตรงกัน การตรวจสอบจะสำเร็จเสมอ ซึ่งเป็นวัตถุประสงค์ทั้งหมดของคีย์เหล่านี้ คีย์มีไว้สำหรับสภาพแวดล้อมในเครื่องและสเตจจิง แต่กลับหลุดมาถึงระบบใช้งานจริงอยู่เสมอ: นักพัฒนาวางคีย์ไว้ตอนสร้าง เว็บไซต์เปิดใช้งาน แล้วไม่มีใครเปลี่ยนออก อย่างน้อย reCAPTCHA ยังมีข้อความในวิดเจ็ตว่าทดสอบเท่านั้น แต่การตั้งค่าแบบมองไม่เห็นแทบไม่มีใครดู หากทั้งคีย์เว็บไซต์ทดสอบและคีย์ลับทดสอบอยู่บนระบบจริง ทุกการส่งจะผ่านไม่ว่าจะมาจากคนหรือบอต แต่หากมีเพียงคีย์เว็บไซต์ที่เป็นคีย์ทดสอบ การตรวจสอบจะล้มเหลวแทนและข้อความจริงอาจถูกปฏิเสธ

โทเค็นที่ไม่มีใครตรวจสอบ

กรณีคลาสสิกที่สองคือเซิร์ฟเวอร์ไม่เคยถามผู้ให้บริการ วิดเจ็ตทำงาน มีการสร้างและส่งโทเค็น แต่ตัวประมวลผลแบบฟอร์มเพิกเฉยต่อโทเค็น ที่มาที่พบบ่อยคือแบบฟอร์มเขียนเอง โค้ดตัวอย่างที่คัดลอกมาครอบคลุมเฉพาะฝั่งเบราว์เซอร์ และการตั้งค่าปลั๊กอินที่ยังไม่เสร็จ กรณีใกล้เคียงคือเซิร์ฟเวอร์เรียกบริการตรวจสอบจริง แต่ตรวจเพียงว่าคำขอสำเร็จหรือไม่ ไม่ตรวจเนื้อหาคำตอบ หรือกำหนดเกณฑ์คะแนน reCAPTCHA v3 เป็น 0 ซึ่งยอมรับทุกคะแนนที่บริการส่งกลับ ตัวประมวลผลบางตัวยัง “เปิดให้ผ่านเมื่อผิดพลาด”: หากไม่มีโทเค็นหรือตรวจสอบล้มเหลวก็ยังรับข้อความ บอตจึงเพียงไม่ส่งโทเค็นมา

เมื่อวิดเจ็ตไม่เคยโหลดจริง

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

ยังมีอีกสองกรณีที่มองข้ามง่าย สำหรับ reCAPTCHA v3 ป้ายที่มุมเพียงแสดงว่าสคริปต์ถูกโหลดไว้ที่ใดที่หนึ่งบนหน้า อาจโดยธีมหรือปลั๊กอินอื่น ขณะที่การเชื่อมต่อในปลั๊กอินแบบฟอร์มเองปิดอยู่ และปลั๊กอินแคชอาจเก็บหน้าไว้พร้อมโทเค็นที่ฝังใน HTML โทเค็น CAPTCHA ใช้ได้เพียงไม่กี่นาทีและตรวจสอบได้ครั้งเดียว โทเค็นที่อยู่ในแคชจึงล้มเหลวสำหรับผู้เยี่ยมชมจริง การ “แก้ไข” ที่ชวนให้ทำด้วยการปิดการตรวจสอบจะถอดการป้องกันออกอย่างเงียบ ๆ

สิ่งที่เห็นกับความเป็นจริง
สิ่งที่มองเห็น
  • วิดเจ็ตแสดงข้อความว่า “สำหรับการทดสอบเท่านั้น”
  • มีป้าย v3 อยู่ที่มุม
  • วิดเจ็ตแสดงผลและส่งโทเค็นกลับ
  • สแปมหยุดแล้ว แต่ข้อความสอบถามจริงก็หยุดด้วย
สิ่งที่อาจกำลังเกิดขึ้น
  • กำลังใช้คีย์ทดสอบสาธารณะและการตรวจสอบสำเร็จทุกครั้ง
  • การเชื่อมต่อ reCAPTCHA ในปลั๊กอินแบบฟอร์มปิดอยู่
  • เซิร์ฟเวอร์ไม่เคยส่งโทเค็นไปตรวจสอบ หรือเพิกเฉยต่อผลลัพธ์
  • คีย์เว็บไซต์ไม่ได้ลงทะเบียนสำหรับโดเมน หรือโทเค็นในแคชหมดอายุ

ตรวจด้วยตนเองอย่างรวดเร็ว

  1. 1เปิดหน้าแบบฟอร์มในหน้าต่างส่วนตัว เปิดเครื่องมือสำหรับนักพัฒนาของเบราว์เซอร์ แล้วดูข้อผิดพลาดจากสคริปต์ CAPTCHA ในคอนโซล
  2. 2ตรวจว่าวิดเจ็ตปรากฏจริง ทั้งก่อนและหลังยอมรับแบนเนอร์คุกกี้ และไม่สามารถส่งแบบฟอร์มได้ขณะไม่มีวิดเจ็ต
  3. 3ในคอนโซลผู้ดูแลของผู้ให้บริการ ตรวจว่าคีย์เว็บไซต์ระบุโดเมนที่ใช้งานจริง รวมถึงรูปแบบอื่น เช่น www และคีย์ในปลั๊กอินแบบฟอร์มหรือโค้ดตรงกัน ไม่ใช่คีย์จากเอกสารหรือตัวระบบสเตจจิง
  4. 4ในการตั้งค่าปลั๊กอินแบบฟอร์ม ตรวจว่าเปิดการเชื่อมต่อ CAPTCHA สำหรับแบบฟอร์มนี้โดยเฉพาะ สำหรับ reCAPTCHA v3 ให้ตรวจว่าเกณฑ์คะแนนสูงกว่า 0
  5. 5หากเข้าถึงโค้ดได้ ให้หาการตรวจสอบฝั่งเซิร์ฟเวอร์และตรวจว่าปฏิเสธการส่งเมื่อคำตอบเป็นลบหรือไม่มีโทเค็น
  6. 6ยกเว้นหน้าแบบฟอร์มจากการแคชทั้งหน้า หรือตรวจให้แน่ใจว่าสร้างโทเค็นใหม่ในเบราว์เซอร์
  7. 7ส่งข้อความทดสอบจริงและตรวจว่าส่งถึง ทำซ้ำหลังเปลี่ยนธีม ปลั๊กอิน หรือเครื่องมือขอความยินยอม
สิ่งที่การตรวจจากภายนอกมองเห็นและมองไม่เห็น
คีย์ทดสอบ มาร์กอัปวิดเจ็ตที่ไม่มีสคริปต์ ข้อผิดพลาดในคอนโซล และสคริปต์ที่ถูกบล็อกมองเห็นได้จากภายนอก การตรวจสอบฟรีที่ formexposed.com มองหาสัญญาณเหล่านี้โดยไม่ส่งข้อมูลใด ๆ ส่วนเซิร์ฟเวอร์ตรวจโทเค็นจริงหรือไม่นั้นมองไม่เห็นจากหน้าเว็บ ต้องดูในโค้ดเซิร์ฟเวอร์หรือทดสอบส่งจริง

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