メインコンテンツへ移動

เนื้อหาภาษาไทย / タイ語のコンテンツ

システムガイド 内容確認済み

การใช้ CAPTCHA

บทความนี้กล่าวถึงการใช้ CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart) เพื่อป้องกัน Bot จากการใช้งานเว็บไซต์อย่างไม่เหมาะส...

การใช้ CAPTCHA เพื่อป้องกัน Bot

ในบทที่แล้ว เราได้เรียนรู้เกี่ยวกับการป้องกัน Brute-Force Attack ซึ่งเป็นหนึ่งในภัยคุกคามที่พบบ่อยที่สุดในการพัฒนาเว็บแอปพลิเคชัน ในบทนี้ เราจะมาเรียนรู้วิธีการใช้ CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart) เพื่อป้องกัน Bot จากการเข้าถึงหรือใช้งานฟังก์ชันต่างๆ บนเว็บไซต์ของเรา

CAPTCHA คืออะไร และทำไมถึงสำคัญ?

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

การใช้ CAPTCHA มีความสำคัญอย่างยิ่งในการป้องกัน:

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

ประเภทของ CAPTCHA

มี CAPTCHA หลายประเภทให้เลือกใช้งาน แต่ละประเภทก็มีข้อดีข้อเสียแตกต่างกันไป ตัวอย่างเช่น:

  • Text-based CAPTCHA: เป็น CAPTCHA ที่เก่าแก่ที่สุด โดยจะแสดงภาพหรือข้อความที่บิดเบือน และให้ผู้ใช้งานป้อนข้อความที่เห็น ปัญหาของ CAPTCHA ประเภทนี้คือ Bot เริ่มฉลาดขึ้นและสามารถแก้ CAPTCHA เหล่านี้ได้ง่ายขึ้น
  • Image-based CAPTCHA: จะแสดงภาพหลายภาพ และให้ผู้ใช้งานเลือกภาพที่ตรงกับคำอธิบายที่กำหนด เช่น "เลือกภาพที่มีรถยนต์" CAPTCHA ประเภทนี้มีความปลอดภัยมากกว่า Text-based CAPTCHA แต่ก็อาจทำให้ผู้ใช้งานบางรายรู้สึกไม่สะดวก
  • Audio CAPTCHA: จะให้ผู้ใช้งานฟังเสียงที่บิดเบือน และให้ผู้ใช้งานป้อนข้อความที่ได้ยิน CAPTCHA ประเภทนี้มีประโยชน์สำหรับผู้ที่มีปัญหาด้านการมองเห็น
  • reCAPTCHA (Google): เป็น CAPTCHA ที่ได้รับความนิยมมากที่สุด โดยจะใช้เทคนิคขั้นสูงในการแยกแยะระหว่างมนุษย์และ Bot reCAPTCHA เวอร์ชั่นใหม่ๆ มักจะขอให้ผู้ใช้งานคลิกที่ช่อง "ฉันไม่ใช่โปรแกรมอัตโนมัติ" เท่านั้น (No CAPTCHA reCAPTCHA) หรืออาจจะไม่ต้องทำอะไรเลย หาก Google มั่นใจว่าผู้ใช้งานเป็นมนุษย์จริงๆ

เหตุผลเชิงออกแบบ: การเลือกประเภทของ CAPTCHA ควรพิจารณาถึงความปลอดภัย, ความสะดวกในการใช้งาน และกลุ่มเป้าหมายของผู้ใช้งาน หากต้องการความปลอดภัยสูงสุด อาจต้องใช้ CAPTCHA ที่ซับซ้อนกว่า แต่ก็อาจทำให้ผู้ใช้งานบางรายรู้สึกไม่สะดวก ดังนั้นจึงต้องพิจารณา Trade-off อย่างรอบคอบ

การติดตั้ง CAPTCHA Library

ในการใช้งาน CAPTCHA ใน PHP เราสามารถใช้ Library ที่มีอยู่มากมายได้ ตัวอย่างเช่น:

  • Securimage: เป็น Library ฟรีที่สามารถสร้าง Text-based CAPTCHA ได้อย่างง่ายดาย
  • Gregwar Captcha: เป็น Library ที่ยืดหยุ่นและสามารถปรับแต่งได้สูง
  • reCAPTCHA (Google): หากต้องการใช้ reCAPTCHA ของ Google จะต้องลงทะเบียนเว็บไซต์ของคุณกับ Google และรับ Site Key และ Secret Key

ในตัวอย่างนี้ เราจะใช้ reCAPTCHA ของ Google เนื่องจากเป็น CAPTCHA ที่ได้รับความนิยมและมีความปลอดภัยสูง

ขั้นตอนการติดตั้ง reCAPTCHA:

  1. ไปที่ Google reCAPTCHA admin console
  2. ลงทะเบียนเว็บไซต์ของคุณ
  3. เลือกประเภทของ reCAPTCHA (reCAPTCHA v2 หรือ reCAPTCHA v3)
  4. รับ Site Key และ Secret Key

การใช้งาน CAPTCHA ใน Form

เมื่อเราได้ Site Key และ Secret Key แล้ว เราก็สามารถนำ reCAPTCHA ไปใช้งานใน Form ของเราได้

ตัวอย่างโค้ด HTML:

<form action="process.php" method="post">
    <label for="name">Name:</label><br>
    <input type="text" id="name" name="name"><br><br>

    <label for="email">Email:</label><br>
    <input type="email" id="email" name="email"><br><br>

    <div class="g-recaptcha" data-sitekey="YOUR_SITE_KEY"></div><br>

    <input type="submit" value="Submit">
</form>

<script src="https://www.google.com/recaptcha/api.js" async defer></script>

คำอธิบาย:

  • เราเพิ่ม `<div class="g-recaptcha" data-sitekey="YOUR_SITE_KEY"></div>` ลงใน Form ของเรา โดยแทนที่ `YOUR_SITE_KEY` ด้วย Site Key ที่เราได้รับจาก Google
  • เราเพิ่ม `
Office.in.th Custom Service

この構成をもとにシステムを開発・カスタマイズしたいですか?

Office.in.th は、エンタープライズ Web アプリケーション、API 連携、官民の業務管理システムの設計・開発を承り、長期的なサポートも提供します。

ソフトウェア開発サービスを見る