แบบฟอร์มติดต่อ WordPress: รายการตรวจความปลอดภัย
Contact Form 7, WPForms, Gravity Forms, Ninja Forms หรือ Fluent Forms ชนิดปลั๊กอินสำคัญน้อยกว่าวิธีตั้งค่าและดูแล ต่อไปนี้คือสิ่งที่ต้องตรวจและตรวจซ้ำหลังอัปเดตทุกครั้ง
เว็บไซต์ WordPress ส่วนใหญ่ใช้หนึ่งในปลั๊กอินแบบฟอร์มไม่กี่ตัว เช่น Contact Form 7, WPForms, Gravity Forms, Ninja Forms, Fluent Forms และอีกบางตัว ทุกตัวสามารถใช้งานอย่างปลอดภัยหรือปล่อยให้เปิดโล่งได้ ความแตกต่างแทบไม่ได้อยู่ที่ตัวปลั๊กอิน แต่อยู่ที่การตั้งค่า ส่วนเสริมรอบข้าง วิธีส่งอีเมลออกจากเซิร์ฟเวอร์ และสิ่งที่เกิดกับข้อความเมื่อมาถึง
- อัปเดตปลั๊กอินแบบฟอร์มและส่วนเสริมทุกตัวให้เป็นปัจจุบัน และลบตัวที่ไม่ใช้แล้ว
- เปิดระบบป้องกันสแปมของปลั๊กอินเอง เช่น ช่องดักบอต การเชื่อมต่อ CAPTCHA หรือ Akismet เมื่อเหมาะสม และยืนยันว่าทำงานจริง
- ส่งการแจ้งเตือนผ่าน SMTP ที่มีการยืนยันตัวตนจากที่อยู่ในโดเมนของเว็บไซต์เอง
- จำกัดประเภทและขนาดไฟล์อัปโหลด และป้องกันไม่ให้แสดงรายการหรือเรียกดูไฟล์ที่อัปโหลดแบบสาธารณะ
- ไม่ให้ที่อยู่อีเมลผู้รับปรากฏบนหน้าหรือในซอร์สโค้ดของหน้า
- เก็บเฉพาะรายการที่ต้องใช้ และเก็บนานเท่าที่จำเป็นเท่านั้น
- ตรวจสั้น ๆ หลังอัปเดต WordPress ธีม หรือปลั๊กอินใด ๆ ทุกครั้ง
การอัปเดต: ปลั๊กอินแบบฟอร์มและทุกอย่างรอบข้าง
ปลั๊กอินแบบฟอร์มเป็นเป้าหมายยอดนิยมเพราะรับข้อมูลจากใครก็ได้บนอินเทอร์เน็ต แพตช์ความปลอดภัยมาพร้อมการอัปเดตทั่วไป จึงควรอัปเดตทันที และไม่ใช่เพียงปลั๊กอินหลัก ส่วนเสริมการชำระเงิน อัปโหลด การเชื่อม CRM เงื่อนไขตรรกะ หรือผู้ให้บริการ CAPTCHA เพิ่มเติมเป็นโค้ดแยกที่มีช่องโหว่ของตนเอง เช่นเดียวกับปลั๊กอินที่เคยติดตั้งทดลองแล้วลืม การปิดใช้งานไม่เพียงพอ ปลั๊กอินที่ปิดยังอยู่บนเซิร์ฟเวอร์และบางกรณีเข้าถึงไฟล์โดยตรงได้ หากไม่ใช้ ให้ลบ
ป้องกันสแปม: เปิดแล้วพิสูจน์ว่าได้ผล
ปลั๊กอินแบบฟอร์มส่วนใหญ่มีตัวเลือกป้องกันสแปมของตนเองหรือเชื่อมบริการภายนอก เช่น ช่องดักบอตที่บอตกรอกแต่คนมองไม่เห็น CAPTCHA อย่าง reCAPTCHA, hCaptcha หรือ Cloudflare Turnstile และ Akismet ที่ตรวจเนื้อหาข้อความกับฐานข้อมูลสแปม ตัวเลือกต่างกันตามปลั๊กอินและเวอร์ชัน จึงต้องตรวจการตั้งค่า ไม่ใช่คิดว่ามีอยู่แล้ว CAPTCHA ภายนอกโหลดสคริปต์จากบุคคลที่สาม ส่วน Akismet ส่งเนื้อหาที่กรอกไปยังบริการภายนอก ทั้งสองอย่างต้องอยู่ในนโยบายความเป็นส่วนตัว และขึ้นอยู่กับการตั้งค่า อาจต้องอยู่ในระบบจัดการความยินยอมด้วย
ปัญหาที่พบบ่อยกว่าคือเปิดการป้องกันแล้วแต่ไม่ทำงาน CAPTCHA ที่ใช้คีย์ทดสอบสาธารณะปล่อยทุกอย่างผ่าน วิดเจ็ตที่สคริปต์ถูกบล็อกโดยปลั๊กอินแคชหรือเพิ่มประสิทธิภาพ หรือโดยข้อผิดพลาด JavaScript ไม่ได้หยุดอะไร ช่องดักบอตที่ไม่มีสไตล์ซ่อนจะถูกโปรแกรมอ่านหน้าจออ่านและผู้เยี่ยมชมจริงกรอก ดังนั้นหลังเปลี่ยนแปลงใด ๆ ให้เปิดแบบฟอร์มในหน้าต่างส่วนตัว ตรวจคอนโซลเบราว์เซอร์และซอร์สของหน้า แล้วส่งข้อความทดสอบ หากต้องการการป้องกันที่ไม่พึ่ง Google ปลั๊กอิน WordPress ฟรีของ formexposed เพิ่มช่องดักบอต การตรวจสอบเวลา และการพิสูจน์การทำงาน พร้อมตรวจเว็บไซต์ซ้ำหลังอัปเดตปลั๊กอิน ซึ่งเป็นหนึ่งในหลายทางเลือก
อีเมล: ส่งอย่างไรและไปที่ไหน
โดยค่าเริ่มต้น WordPress ส่งต่ออีเมลให้ฟังก์ชันส่งอีเมล PHP ของเซิร์ฟเวอร์ และบนโฮสต์จำนวนมากข้อความเหล่านี้ยืนยันตัวตนไม่ดี จึงเข้าถังสแปมหรือหายไปเงียบ ๆ ควรส่งผ่านปลั๊กอิน SMTP หรือบริการอีเมลของโฮสต์แทน โดยใช้กล่องจดหมายจริงพร้อมชื่อผู้ใช้และรหัสผ่าน และที่อยู่ผู้ส่งในโดเมนของเว็บไซต์เอง เช่น ที่อยู่ forms@ โดยเฉพาะ ระเบียน SPF, DKIM และ DMARC ของโดเมนต้องครอบคลุมผู้ส่งนี้ อย่าใส่ที่อยู่ผู้เยี่ยมชมใน From เพราะไม่ใช่โดเมนของเว็บไซต์ ข้อความจึงไม่ผ่านการตรวจความสอดคล้องของ DMARC และอาจเข้าถังสแปมหรือถูกปฏิเสธตามนโยบายของโดเมนผู้เยี่ยมชม ให้ใส่ใน Reply-To แล้วยังตอบกลับได้ด้วยคลิกเดียว
ที่อยู่ผู้รับควรอยู่ในการตั้งค่าปลั๊กอิน ไม่ใช่บนหน้า ตรวจซอร์สของหน้าติดต่อ: ลิงก์ mailto ข้างแบบฟอร์มหรือช่องซ่อนที่เก็บที่อยู่ผู้รับมอบที่อยู่นั้นให้บอตเก็บอีเมลทุกตัว ในแบบฟอร์มเก่าหรือแบบเขียนเองอาจแย่กว่านั้น หากเซิร์ฟเวอร์เชื่อช่องผู้รับที่ซ่อน ใครก็เปลี่ยนค่าและใช้แบบฟอร์มส่งอีเมลไปยังที่อยู่ใดก็ได้
ไฟล์อัปโหลดและรายการที่เก็บไว้
การอัปโหลดไฟล์เป็นคุณสมบัติที่เสี่ยงที่สุดของแบบฟอร์ม จึงควรถามก่อนว่าจำเป็นจริงหรือไม่ หากจำเป็น ให้อนุญาตเฉพาะประเภทที่คาดว่าจะรับ เช่น PDF และรูปแบบรูปภาพทั่วไป แทนการบล็อกเพียงไม่กี่ประเภทอันตราย และกำหนดขนาดสูงสุด ตรวจที่จัดเก็บไฟล์ของปลั๊กอิน ต้องไม่แสดงรายการในไดเรกทอรีสาธารณะ และถ้าเป็นไปได้ไม่ควรเข้าถึงผ่านที่อยู่ที่เดาได้เลย ลบเมื่อจัดการเสร็จ หรือส่งเป็นไฟล์แนบแทนเก็บบนเซิร์ฟเวอร์
ปลั๊กอินแบบฟอร์มหรือส่วนเสริมจำนวนมากเก็บทุกการส่งในฐานข้อมูล WordPress และมักรวมสแปมด้วย เป็นสำเนาสำรองที่มีประโยชน์เมื่ออีเมลล้มเหลว แต่ก็เป็นกองข้อมูลส่วนบุคคลที่โตขึ้นเรื่อย ๆ ตามหลักจำกัดระยะเวลาเก็บของ GDPR (มาตรา 5(1)(e)) ไม่ควรเก็บข้อมูลนานเกินจำเป็น ตัดสินใจว่าต้องเก็บรายการหรือไม่ ช่องใด และนานเท่าใด แล้วใช้การลบอัตโนมัติของปลั๊กอินหากมี หรือลบรายการเก่าเป็นประจำ สำเนาสำรองฐานข้อมูลมีข้อมูลเดียวกันด้วย
หลังอัปเดตทุกครั้ง
- 1เปิดหน้าติดต่อในหน้าต่างส่วนตัว: แบบฟอร์มและส่วนป้องกันสแปมแสดงถูกต้อง และคอนโซลเบราว์เซอร์ไม่มีข้อผิดพลาด
- 2ดูซอร์สของหน้า: ช่องดักบอตและสคริปต์ CAPTCHA ยังอยู่ แต่ที่อยู่ผู้รับไม่ปรากฏ
- 3ส่งข้อความทดสอบ: เข้ากล่องจดหมาย ไม่ใช่ถังสแปม และส่วนหัวแสดงว่า SPF, DKIM และ DMARC ผ่าน
- 4ตรวจการตั้งค่าสำคัญ: ผู้รับ ที่อยู่ผู้ส่ง ประเภทและขนาดอัปโหลดที่อนุญาต และระยะเวลาเก็บรายการ
- 5ตรวจว่าลิงก์นโยบายความเป็นส่วนตัวและข้อความขอความยินยอมยังแสดงที่แบบฟอร์ม
- 6บันทึกวันที่และสิ่งที่ตรวจ เพื่อให้ทราบครั้งล่าสุดที่พิสูจน์ได้ว่าแบบฟอร์มทำงาน
เมื่อเป็นกิจวัตร ขั้นตอนนี้ใช้เวลาไม่มากและจับข้อผิดพลาดเงียบ ๆ ที่อาจไม่มีใครสังเกตหลายสัปดาห์ได้ตรงจุด หากต้องการมุมมองจากภายนอก การตรวจสอบฟรีที่ formexposed.com ดูหน้าแบบฟอร์มสาธารณะของเว็บไซต์โดยไม่ส่งอะไร และแสดงว่าการป้องกันที่คาดหวังมีอยู่และตั้งค่าได้ผลหรือไม่ โดยไม่ต้องมีบัญชี