อ้างถึง มีใครโดนเจ้า emurhfkq รุกรานบ้างไหม?
วิธีที่ผมใช้คือแก้ไขไฟล์ .htaccess เดิมของ Drupal (ผมใช้รุ่น 4.7 นะ เพราะ host ยังเป็น php4 อยู่) โดยเพิ่มส่วนต่อไปนี้ลงในตอนท้าย
## Denied spambot # set the spam_ref variable SetEnvIfNoCase Referer "http(s)?://(www.)?google.com/$" spam_ref=1 SetEnvIfNoCase Referer "$" no_ref=1 # block all no referrer post <Limit POST> Order Allow,Deny Allow from all Deny from env=no_ref </Limit> # block all referres those have spam_ref set <FilesMatch "(.*)"> Order Allow,Deny Allow from all Deny from env=spam_ref </FilesMatch>
คำอธิบาย: พฤติกรรมของบอทตัวนี้คือใช้ Referrer เป็น http://www.google.com/ เสมอ ดังนั้นเลยเขียนเงื่อนไขดักว่าใครที่ได้ลิงก์เข้าเว็บผมจากหน้าแรกของ Google (มีด้วยหรือ???) ให้ถือว่าเป็น spam เลย
แต่แล้วหลังจากดักด้วยกฎข้อนี้ได้ไม่นาน ผมก็เจอพฤติกรรมแปลกอีกแล้ว คือ ชื่อบอทตัวนี้เช่นเดิม พยายามจะ Login อีกแต่คราวนี้ปราศจาก Referrer จึงทำให้ผมต้องเพิ่มกฎไปอีกข้อว่า ห้ามทำการ Post โดยไม่มี Referrer (หวังว่าคงจะไม่โดน Post มาจากเว็บแห่งอื่นในเร็วๆ นี้นะ) ซึ่งจะสามารถดักการยิง Post จากไฟล์ HTML เปล่าๆ (ยิงจากเครื่องใดๆ ที่ไม่ใช่หน้าเว็บบน Web Server) ได้
ถ้ามีคำแนะนำเพิ่มเติมก็ติชมได้ครับ ผมเขียน .htaccess ไม่เป็น นี่ก็ลองมั่วๆ ตามสิ่งที่พอจะหาได้บนเนต
กระทู้เก่าๆ จะย้ายตามไปในภายหลัง ตอนนี้ปิดการโพสต์กระทู้ไว้ เหลือไว้เฉพาะอ้างอิงเท่านั้น
ขอบคุณครับ ^ ^
เหมือนเงื่อนไขตรวจ no referrer ของผมจะผิดนะครับ (มีหลุดมาได้ 2 ตัว) อย่างไรก็ฝากแก้ไขให้ด้วยครับ
เติมบรรทัดนี้ลงไปใน index.php ต่อจาก
น่าจะช่วยได้ครับ พอดีไม่คล่อง drupal ผมคิดว่าน่าจะมีวิธีทำให้เป็นโมดูล โดนเรียกใช้ตอน bootstrap ได้
update : เติมลงไปในท้ายฟังก์ชั่น drupal_ bootstrap() ใน include/bootstrap.php น่าจะเวิร์คกว่า เพราะ POST ไม่ได้ส่งเข้า index.php เสมอไป
ถ้ามันมาด้วยชื่อเดิมตลอดก็ไปใส่ rule เพื่อไม่อนุญาตให้ใช้ชื่อนี้สมัครก็ได้ครับ
ปัญหาคือ ผมลบสมาชิกตัวนั้นไปแล้ว แต่ก็มีความพยายามจะ login เข้ามาตลอดครับ (ตั้ง access rule ไปก็ไม่มีประโยชน์เพราะมันไม่สามารถ login ได้อยู่แล้ว) ซึ่งผมเข้าใจว่าเมื่อมีการโหลด index.php ปุ๊บ มันจะไปกิน database connection ทันที ทำให้ database ล่มอยู่เสมอๆ
จึงเลี่ยงหันมาแก้ที่กระบวนการก่อนจะเข้าถึง index.php แทน แต่ก็อย่างที่เรียนไว้ข้างต้นว่า ผมเขียน .htaccess ไม่เป็น และก็เหมือน no referrer ที่ตั้งไว้ มันจะไม่ได้เป็นว่างๆ อย่างที่คิดแล้ว