วิธีป้องกันสแปมความคิดเห็นของ WordPress จากการทำให้บล็อก WordPress ของคุณล่มและทำลายเซิร์ฟเวอร์ของคุณ
เผยแพร่แล้ว: 2021-08-19ก่อนอื่น ฉันแค่อยากจะชี้แจงว่าบทความนี้ไม่เกี่ยวกับวิธีตรวจจับและตั้งค่าสถานะความคิดเห็นว่าเป็นสแปม ปลั๊กอิน WordPress Akismet ทำงานได้ดีมากในการคัดกรองและกรองความคิดเห็นที่เป็นสแปมของ WordPress แบบดั้งเดิม
แต่โพสต์นี้เกี่ยวกับวิธีป้องกันสแปมความคิดเห็นและกิจกรรมอันธพาลอื่นๆ ไม่ให้ เซิร์ฟเวอร์ของคุณล่มและทำลายบล็อกของคุณ

ภาพถ่ายโดย BoxChain
ดังที่ฉันได้กล่าวไว้ในบทความที่แล้ว การเข้าชมบล็อกของฉันเพิ่มขึ้นเป็นสองเท่าในปีที่ผ่านมา
และน่าเสียดายในช่วงเวลานั้น จำนวนความคิดเห็นเกี่ยวกับสแปมก็เพิ่มขึ้นตามลำดับความสำคัญเช่นกัน
เพื่อให้ความคิดคุณ มีหลายวันในเดือนธันวาคมที่ฉันถูกโจมตีด้วยความคิดเห็นเกี่ยวกับสแปมมากกว่า 20 รายการทุกๆ สองสามวินาที
ใช่คุณได้ยินถูกต้อง เมื่อใดก็ตามที่ฉันรีเฟรชแดชบอร์ด ฉันจะเห็นความคิดเห็นที่เป็นสแปม 20 รายการขึ้นไปในตัวกรอง Akismet ของฉัน อันที่จริง จำนวนสแปมทำให้เว็บไซต์ทั้งหมดบนเซิร์ฟเวอร์ของฉันช้ามากหรือไม่สามารถเข้าถึงได้เป็นระยะเวลานานในวันนั้น
ปัญหาเกี่ยวกับ WordPress
ขณะนี้ภายใต้การทำงานปกติ บล็อกของฉันทำงานได้ดีภายใต้การเข้าชมที่หนาแน่น เนื่องจากปลั๊กอินชื่อ WP Super Cache
โดยพื้นฐานแล้ว ปลั๊กอินนี้จะสร้างเวอร์ชันคงที่ของทุกบทความในบล็อกของฉัน เพื่อให้สามารถให้บริการแก่ผู้ใช้ปลายทางได้อย่างรวดเร็ว
อย่างไรก็ตาม ปลั๊กอินนี้ใช้ไม่ได้ผลกับความคิดเห็นที่หลั่งไหลเข้ามาจำนวนมาก เนื่องจากความคิดเห็นต้องการให้เซิร์ฟเวอร์ของคุณเรียกใช้ WordPress ทุกครั้งเพื่อประมวลผลความคิดเห็นทีละรายการ
และเนื่องจาก WordPress เป็นทรัพยากรที่ล้นหลาม ความคิดเห็นที่เป็นสแปมจำนวนมากจึงสามารถลบบล็อกได้อย่างง่ายดาย แม้ว่าคุณจะอยู่บนเซิร์ฟเวอร์เฉพาะและคุณใช้ปลั๊กอินสำหรับแคช
ไม่สำคัญว่าคุณจะใช้ตัวกรองสแปมความคิดเห็นที่ดีที่สุดในโลกหรือไม่ ความคิดเห็นที่เป็นสแปมทั้งหมดยังคงต้องได้รับการประมวลผลโดย WordPress ซึ่งใช้ทรัพยากรเซิร์ฟเวอร์จำนวนมาก
ลักษณะของสแปมบอท
ขณะนี้การมีบล็อกที่ช้าหรือไม่สามารถเข้าถึงได้ก็เป็นเรื่องหนึ่ง แต่สแปมความคิดเห็นยังส่งผลกระทบต่อไซต์อื่นๆ ที่ทำงานบนเซิร์ฟเวอร์เดียวกันซึ่งไม่เป็นที่ยอมรับ หลังจากค้นคว้าเกี่ยวกับสแปมบอท ฉันได้ค้นพบบางสิ่ง
- สแปมบอทมักไม่ยอมรับคุกกี้
- บอทสแปมสามารถทิ้งความคิดเห็นเป็นสแปมได้ในเวลาไม่กี่วินาที
- บอทสแปมมักจะไม่เรียกใช้จาวาสคริปต์
แล้วนี่หมายความว่าอย่างไร? ในแง่ที่ไม่ใช่ด้านเทคนิค บอทสแปมจะไม่ทำงานเหมือนผู้ใช้ทั่วไปบนเว็บเบราว์เซอร์ และกุญแจสำคัญในการแก้ปัญหาของฉันคือการตรวจหาสแปมบอททันทีและนำไปยังหน้าแสดงข้อผิดพลาดแทนที่จะเปิดตัว WordPress
จากลักษณะเฉพาะที่อธิบายข้างต้น ฉันสามารถตรวจจับสแปมบอทได้โดยการวางคุกกี้ในเครื่องของผู้ใช้ ปิดใช้งานความคิดเห็นเป็นเวลาหลายวินาทีหลังจากโหลดหน้าเว็บ หรือสร้างโค้ดจาวาสคริปต์เพื่อตรวจหาสแปมบอท
การแก้ปัญหาสแปมความคิดเห็นของฉัน
หลังจากไตร่ตรองอย่างถี่ถ้วนแล้ว ฉันก็คิดวิธีแก้ไขเพื่อแอบแทรกคุกกี้ในเครื่องของผู้ใช้ทุกครั้งที่มีการเข้าถึงหน้าในบล็อกของฉัน ฉันสามารถค้นหาคุกกี้นี้ในเครื่องของผู้ใช้ก่อนที่จะอนุญาตให้แสดงความคิดเห็นได้
เนื่องจากโดยทั่วไปแล้วบอทสแปมจะไม่ยอมรับคุกกี้ ฉันจึงสามารถตรวจจับบอทได้อย่างง่ายดายและนำไปยังหน้าข้อผิดพลาดคงที่
เดิมทีฉันวางแผนที่จะโพสต์ซอร์สโค้ดของฉันในรายการบล็อกนี้ซึ่งฉันเขียนด้วยจาวาสคริปต์ (ฉันยินดีที่จะส่งให้คุณหากคุณสงสัย) แต่หลังจากพูดคุยกับเพื่อนบล็อกเกอร์สองสามคน ฉันพบว่าผู้เขียนคนเดียวกัน ของ WP Super Cache, Donncha ได้เขียนปลั๊กอินที่เรียกว่า Cookies For Comments ซึ่งทำในสิ่งเดียวกับที่ฉันเพิ่งเขียน
เนื่องจากปลั๊กอินของเขาเขียนได้อย่างสวยงามกว่าปลั๊กอิน javascript ของฉัน ฉันจึงขอแนะนำให้คุณไปดาวน์โหลด
แต่ถ้าคุณวางแผนที่จะใช้ปลั๊กอินคุกกี้สำหรับความคิดเห็นของ Donncha ตรวจสอบให้แน่ใจว่าคุณได้ทำการเปลี่ยนแปลงต่อไปนี้ใน .htaccess ของคุณ ซึ่งแตกต่างจากคำแนะนำในการติดตั้งปลั๊กอิน
RewriteCond %{HTTP_COOKIE} !^.*2071a9e39879b6a958b06162384d3c06.*$
RewriteRule ^wp-comments-post.php – [F,L]
2 เส้นนี้ทำอะไร? โดยพื้นฐานแล้ว บรรทัดโค้ดเหล่านี้จะตรวจจับว่ามีคุกกี้ลับที่แทรกอยู่ในเครื่องของผู้ใช้ หากไม่มีคุกกี้ ผู้ใช้หรือบอทสแปมจะถูกนำไปยังหน้า 404 ของ WordPress หรือ “ไม่พบหน้า”

ตอนนี้ปัญหาของการตั้งค่าเริ่มต้นนี้คือ WordPress ยังคงถูกเรียกเพื่อดำเนินการหน้า 404 ซึ่งยังคงต้องใช้ทรัพยากรเซิร์ฟเวอร์จำนวนมาก
RewriteCond %{HTTP_COOKIE} !^.*2071a9e39879b6a958b06162384d3c06.*$
RewriteRule ^wp-comments-post.php error.html [L]
ความแตกต่างที่นี่คือสแปมบอทถูกนำไปยังหน้าข้อผิดพลาดแบบคงที่อย่างสมบูรณ์ซึ่งป้องกันไม่ให้ WordPress ถูกโหลดทั้งหมด
แก้ไขปัญหา??? ไม่ค่อย
ดังนั้นการเปลี่ยนแปลงที่ฉันอธิบายไว้ข้างต้นได้แก้ไขปัญหาสแปมความคิดเห็นของฉัน แต่หลังจากทำงานได้อย่างราบรื่นเป็นเวลาสองสามวัน เซิร์ฟเวอร์ของฉันก็เริ่มหยุดทำงานอีกครั้ง! เมื่อดูบันทึกเซิร์ฟเวอร์ของฉัน ฉันพบสิ่งต่อไปนี้
mywifequitherjob.com GET /oxvumirserver33.rar
mywifequitherjob.com GET /oxvumirserver33.rar
mywifequitherjob.com GET /oxvumirserver33.rar
โดยทั่วไป เครื่องโกงบางเครื่องพยายามเข้าถึงไฟล์เดิมที่ไม่มีอยู่บนเซิร์ฟเวอร์ของฉันซ้ำแล้วซ้ำเล่าซึ่งทำให้เว็บไซต์ล่ม ขณะนี้สำหรับเว็บไซต์ปกติ การเข้าถึงอันธพาลเหล่านี้จะไม่ส่งผลกระทบต่อเซิร์ฟเวอร์เลย
อย่างไรก็ตาม WordPress ประมวลผลการเข้าถึงทั้งหมดไปยังไฟล์ที่ไม่มีอยู่ และส่งผู้ใช้ไปยังหน้าเว็บ 404 ที่กำหนดเองของ WordPress หรือ "ไม่พบหน้า"
ฉันพูดถึง WordPress ว่าเป็นหมูทรัพยากรหรือไม่? สิ่งที่ต้องทำคือการเข้าถึงปลอมเหล่านี้และเซิร์ฟเวอร์ของคุณจะยังคงหยุดทำงานไม่ว่าคุณจะใช้ปลั๊กอินแคชอะไรก็ตาม
เคล็ดลับในการแก้ปัญหานี้คล้ายกับปัญหาสแปมความคิดเห็นของฉัน ตามหลักการแล้ว เราต้องการนำ WordPress ออกจากสมการทั้งหมด และส่งผู้ใช้อันธพาลไปยังหน้าข้อผิดพลาดแบบคงที่อย่างสมบูรณ์ เพื่อประหยัดทรัพยากรของเซิร์ฟเวอร์
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(robots\.txt|sitemap\.xml(\.gz)?)
RewriteCond %{REQUEST_FILENAME} \.(css|js|html|htm|rtf|rtx|svg|svgz|txt|xsd|xsl|xml|asf|}
asx|แว็กซ์|wmv|wmx|avi|bmp|คลาส|divx|doc|docx|exe|gif|gz|gzip|ico|jpg|jpeg
|jpe|mdb|กลาง|midi|mov|qt|mp3|m4a|mp4|m4v|mpeg|mpg|mpe|mpp|odb|odc|odf|odg|
odp|ods|odt|ogg|pdf|png|pot|pps|pt|pptx|ra|ram|rar|swf|tar|tif|tiff|wav|wma
|wri|xla|xls|xlsx|xlt|xlw|zip)$ [NC]
RewriteRule .* – [L]
ErrorDocument 404 https://mywifequitherjob.com/404.html
รหัสทั้งหมดนี้ทำอะไร? โดยทั่วไป เมื่อมีการขอไฟล์จากเซิร์ฟเวอร์ของฉันซึ่งตรงกับประเภทใดประเภทหนึ่งข้างต้น ฉันต้องการให้เซิร์ฟเวอร์ของฉันข้าม WordPress ไปโดยสิ้นเชิง หากไม่มีไฟล์ ผู้ใช้จะถูกนำไปยังหน้าข้อผิดพลาดคงที่ที่เรียกว่า 404.html
เป็นอีกครั้งที่การเลี่ยงผ่าน WordPress เป็นกุญแจสำคัญในการแก้ไขปัญหาการหยุดทำงานของฉัน เนื่องจากกระบวนการอันธพาลในบันทึกเซิร์ฟเวอร์ของฉันกำลังเข้าถึงไฟล์ .rar ฉันจึงเปลี่ยนเส้นทางผู้ใช้ที่ประสงค์ร้ายนี้ไปยังหน้าข้อผิดพลาดของฉันซึ่งแทบไม่ใช้ทรัพยากรเลย
วิธีนี้ช่วยแก้ปัญหาทั้งหมดของฉันได้ไหม
ดังนั้นฉันจึงใช้การเปลี่ยนแปลง 2 อย่างข้างต้นมาสองสามสัปดาห์แล้ว และเซิร์ฟเวอร์ของฉันก็ทำงานเหมือนแชมป์เปี้ยนที่ไม่มีการชะลอตัว น่าเสียดายที่วิธีเขียน WordPress ทำให้ไม่สามารถป้องกันการเข้าถึงอันธพาลทั้งหมดไม่ให้เซิร์ฟเวอร์ของคุณขัดข้อง
ตัวอย่างเช่น เมื่อใดก็ตามที่มีคนพยายามเข้าถึงบทความที่ไม่พบในบล็อกของฉัน WordPress ก็ยังถูกโหลด ตามทฤษฎีแล้ว ถ้ามีคนต้องการลบ MyWifeQuitHerJob.com หรือบล็อก WordPress ใด ๆ สำหรับเรื่องนั้น สิ่งที่พวกเขาต้องทำก็คือการเข้าถึงหน้าที่ไม่มีอยู่ในไซต์ซ้ำแล้วซ้ำอีก
แต่ในระหว่างนี้ ดูเหมือนว่าทุกอย่างจะมีเสถียรภาพจากทางฝั่งของฉัน หวังว่าในอนาคต WordPress จะได้รับการแก้ไขเพื่อแก้ไขปัญหาเซิร์ฟเวอร์เหล่านี้