fighting spam!

fighting spam!

150 150 *pradt

เขียนเรื่อง spam comments มาหลายทีแล้ว แต่ยังจัดการแบบให้เรียบร้อยไม่ได้สักที bad behavior + akismet ดูเหมือนจะได้ผลดีที่สุด แต่มีปัญหาตรงที่ bad behavior มันกีดกันจนเกินควมพอดี เนื่องจากมันตรวจจาก ip ว่าตรงกับฐานข้อมูลของมันหรือเปล่า ถ้าอยู่ใน range มันก็ซวยไป ขนาดเจ้าของบล็อก วันดีคืนดีต่อเนตได้ ip ที่อยู่ในรายการของมัน ก็โดนมันบล็อคได้เหมือนกัน ส่วน akismet มันแค่ดูด spam comments เข้าไปซ่อนเท่านั้น ไม่ได้ป้้องกันไม่ให้พวกนี้เข้ามาตอบลง db ของเรา

เมื่อ plug-in สำเร็จรูปแบบง่ายๆ ใช้ไม่ได้ผล ผมก็ต้องใช้วิธีบ้านๆ แก้เอา

spam ตัวป่วนมันจะมาในสองรูปแบบ อันแรกมันเขียนโปรแกรมส่งค่าพารามิเตอร์ ยิงเข้าไปที่ส่วนรับข้อมูลคอมเมนต์ของ wordpress เลย ซึ่งก็คือ wp-comments-post.php วันนึงโดนยิงประมาณ 80 ครั้งได้ วิธีแก้คือ rename file ดังกล่าวไปเป็นชื่ออื่นซะ แล้วก็ไปแก้ comments.php ตรง <form action="<?php echo get_option('siteurl');?>/wp-comments-post.php>" method="post" id="commentform"> ให้ชื่อตรงกันกับ file ใหม่ด้วย

ด้วยวิธีนี้ สามารถลด spam comments ลงไปได้ประมาณ 70% แต่มันยังมีมาในรูปแบบที่สองคือ มันเข้ามาที่บล็อกของเรา แล้วใส่ข้อมูลลงไปใน comment box ตรงๆ วิธีแก้ก็คือ เพิ่ม text field อีกอันใน comments.php

<input type="text" name="word" id="word" value="<?php echo $comment_word; ?>" class="textfield" tabindex="4" />

แล้วก็ไปเพิ่มใน wp-comments-post.php แถวๆ line 45

$comment_word = trim($_POST['word']);
if ( 'คำที่ต้องการ' != $comment_word )
die( __('... incomplete.') );

ป.ล. มีวิธีง่ายๆอย่าง plug-in challenge, gatekeeper, และอื่นๆหาได้ที่ wordpress codex แต่ลองหลายอันแล้ว ไม่ถูกใจ

8 comments
  • จริงๆ น่าจะแก้ Akismet ให้เอาคอมเมนต์ออกจาก DB ไปได้เลย?

  • lewcpe:
    บางที comment ธรรมดามันก็หลุดไปอยู่ใน akismet ได้เหมือนกันนะครับ เวลาที่กด delete all ใน akismet มันก็จะลบออกจาก db ไปด้วย แต่ comment id มันก็วิ่งไปเรื่อย ทุกครั้งที่มี spam comment เข้ามา มันก็เขียนลง db ตลอด [dead]

  • ผมว่าวิธีที่สองก็ได้ผลชะงัดดี แต่ว่ามันลำบากต้องมาพิมพ์ว่า แอนท์ แอนท์ ตลอดเลยอะสิครับ T-T จริงๆ ถ้าสแปมมีแต่ภาษาอังกฤษ แล้วเราตรวจพบอักษรไทยในคอมเมนต์ เราให้ผ่านเลยอาจจะง่ายกว่าสำหรับคนส่วนมากที่ตอบ? แต่คนที่ต้องพิมพ์อังกฤษจริงๆ ก็ให้ใส่ แอ่นแอ๊น ไป??

  • champ:
    ขอวิธีทำด้วยครับ [dead]

  • ปู๊นๆ 2007.01.12 at 0:36

    ลอง ใส่ภาพตัวอักษร ให้กรอก ก่อนกดสับมิท ดูอีกวิธีหรือยัง ค่อนข้างได้ผล เสียเวลาคนจะตอบนิดเดียว

  • เอ่อ ลองหมดแล้วครับ ภาพตัวอักษรหรือตัวเลข มันน่าเกลียดน่ะครับ [eyeclose]

  • ผมว่าใช้วิธีนั้น ภาพน่าเกลียดจริงๆ ครับ

  • ฝ้าย 2007.01.14 at 1:55

    อ่านช่วงแรกๆเข้าใจ ช่วงหลังๆเจอภาษาคอมเข้าไป ลูกกะตาเลยมองผ่านเลย ชวนง่วงเร็วพลัน

Comments are closed.