การโจมตีแบบ Brute force โดยใช้ IP address ที่ต่างกัน กด submit form จำนวนมาก เป็นปัญหาที่พบได้บ่อย Honeypot สามารถช่วยป้องกันปัญหานี้ได้
Honeypot คือ ฟิลด์ที่ซ่อนอยู่ใน form ซึ่งมองไม่เห็นโดยผู้ใช้ทั่วไป แต่ bots จะมองเห็นและกรอกข้อมูลในฟิลด์นี้ เมื่อ bots กรอกข้อมูลใน honeypot แสดงว่าเป็น bots
วิธีการใช้ honeypot:
- เพิ่มฟิลด์ type=”hidden” ลงใน form ของคุณ
- ตั้งชื่อฟิลด์ให้เป็นชื่อที่ bots น่าจะกรอก เช่น “username” หรือ “password”
- ตั้งค่า CSS ของฟิลด์ให้ display: none;
- ตรวจสอบค่าของฟิลด์ honeypot ก่อน submit form
- ถ้าฟิลด์ honeypot มีค่า แสดงว่าเป็น bots ให้แสดงข้อความแจ้งเตือน หรือ ปิดกั้นการ submit form
ตัวอย่าง:
HTML
<form action="/submit">
<input type="text" name="name">
<input type="email" name="email">
<input type="hidden" name="honeypot" style="display: none;">
<button type="submit">Submit</button>
</form>
Use code with caution. Learn morecontent_copy
JavaScript
const form = document.getElementById("form");
form.addEventListener("submit", (event) => {
const honeypot = document.getElementById("honeypot");
if (honeypot.value) {
event.preventDefault();
alert("คุณเป็น bot!");
}
});
Use code with caution. Learn morecontent_copy
ข้อควรระวัง:
- Honeypot อาจไม่สะดวกสำหรับผู้ใช้บางราย
- Bots ที่มีความซับซ้อนอาจสามารถหลีกเลี่ยง honeypot ได้
วิธีการอื่นๆ:
- ใช้ reCAPTCHA
- ใช้ CAPTCHA
สรุป:
Honeypot เป็นวิธีการป้องกันการโจมตีแบบ Brute force ที่ง่ายและมีประสิทธิภาพ แต่ควรใช้วิธีการอื่นร่วมด้วยเพื่อเพิ่มความปลอดภัย
เราสามารถเปลี่ยนแจ้งเตือนเป็นปิดกั้นไม่ให้เข้าถึง domain นี้เลย โดยใช้ Javascript ดังนี้
JavaScript
const form = document.getElementById("form");
form.addEventListener("submit", (event) => {
const honeypot = document.getElementById("honeypot");
if (honeypot.value) {
event.preventDefault();
window.location.href = "https://www.google.com/"; // เปลี่ยน URL นี้เป็น URL ที่คุณต้องการ
}
});
Use code with caution. Learn morecontent_copy
โค้ดด้านบนจะเปลี่ยนเส้นทางผู้ใช้ไปยัง URL ที่กำหนด เมื่อผู้ใช้พยายาม submit form
วิธีการอื่นๆ:
- ตั้งค่า HTTP header “Location” ไปยัง URL ที่ต้องการ
- ใช้ Javascript redirect ผู้ใช้ไปยัง URL ที่ต้องการ
ตัวอย่างการตั้งค่า HTTP header:
PHP
<?php
if (isset($_POST["honeypot"]) && $_POST["honeypot"] != "") {
header("Location: https://www.google.com/");
exit;
}
?>
<form action="/submit" method="post">
<input type="text" name="name">
<input type="email" name="email">
<input type="hidden" name="honeypot" style="display: none;">
<button type="submit">Submit</button>
</form>
Use code with caution. Learn morecontent_copy
ตัวอย่างการใช้ Javascript redirect:
JavaScript
const form = document.getElementById("form");
form.addEventListener("submit", (event) => {
const honeypot = document.getElementById("honeypot");
if (honeypot.value) {
event.preventDefault();
window.location.href = "https://www.google.com/"; // เปลี่ยน URL นี้เป็น URL ที่คุณต้องการ
}
});
Use code with caution. Learn morecontent_copy
ข้อควรระวัง:
- การปิดกั้นการเข้าถึง domain อาจไม่สะดวกสำหรับผู้ใช้บางราย
- ผู้ใช้ที่ไม่ประสงค์ร้ายอาจถูกปิดกั้นโดยไม่ได้ตั้งใจ
สรุป:
เราสามารถปิดกั้นไม่ให้ผู้ใช้เข้าถึง domain นี้ โดยใช้ Javascript หรือตั้งค่า HTTP header “Location” แต่ควรใช้วิธีการเหล่านี้อย่างระมัดระวัง