ไฟล์และไดเรกทอรีของ WordPress มีบทบาทสำคัญในการรักษาความปลอดภัยของไซต์ การตั้งค่าให้ถูกต้องควรเป็นความสำคัญอันดับหนึ่งหลังจากติดตั้ง WordPress การกำหนดสิทธิ์ที่เหมาะสมว่าใครสามารถเห็นไฟล์ไหน และผู้ใช้สามารถทำได้อะไรบ้าง จะปรับปรุงมาตรฐานความปลอดภัยของไซต์ได้อย่างมีนัยสำคัญ ในบทความนี้ เราจะพูดถึงวิธีที่การปิดการรัน PHP และการเรียกดูไดเรกทอรีสามารถปรับปรุงความปลอดภัยของไซต์ได้
ปิดการรัน PHP: ทำไมและอย่างไร?
โฟลเดอร์บางโฟลเดอร์ของ WordPress เช่น Uploads, Themes, หรือ Plugins มีสิทธิ์เขียน (writable) โดยค่าเริ่มต้น สิทธิ์ประเภทนี้อนุญาตให้ผู้ใช้อัปโหลดรูปภาพและวิดีโอ หรือติดตั้งธีมและปลั๊กอิน ทุกครั้งที่เราติดตั้งปลั๊กอินหรือธีม ไฟล์ใหม่จะถูกเก็บในโฟลเดอร์ของแต่ละตัว ไม่สามารถทำได้หากโฟลเดอร์ Themes และ Plugins ไม่มีสิทธิ์เขียน
หนึ่งในเหตุผลที่หลายคนชอบใช้ WordPress สร้างไซต์คือความสามารถในการปรับแต่งได้ง่ายด้วยธีมและปลั๊กอิน ทุกคนสามารถติดตั้งธีมหรือปลั๊กอินได้ ซึ่งเป็นไปได้เพราะโฟลเดอร์ Themes และ Plugins มีสิทธิ์เขียนโดยค่าเริ่มต้น แต่น่าเสียดาย สิทธิ์ประเภทนี้ยังเปิดโอกาสให้เกิดการโจมตีแฮก เช่น การโจมตีฟิชชิง, สแปม SEO, การโจมตีแบบ Brute Force ฯลฯ แฮกเกอร์สามารถอัปโหลดสคริปต์อันตรายซึ่งสามารถรันจากระยะไกลได้ ช่วยให้พวกเขาเข้าถึงไซต์เต็มที่ หรือทำลายเว็บไซต์ของคุณ
สามารถทบทวนได้ว่าเหตุการณ์ Mailpoet Hack อนุญาตให้แฮกเกอร์อัปโหลดโค้ด PHP อันตรายไปยังโฟลเดอร์ Upload ซึ่งพวกเขารันเพื่อควบคุมไซต์
การลบสิทธิ์เขียนออกไม่สะดวก เพราะจะทำให้คุณอัปโหลดรูปภาพ, ติดตั้งปลั๊กอินและธีมไม่ได้ แต่สิ่งที่คุณทำได้คือ ลดขอบเขตของการโจมตีที่สำเร็จโดยการปิดการรัน PHP จะลบสิทธิ์การรันในโฟลเดอร์เฉพาะ
วิธีง่ายๆ ในการปิดการรัน PHP คือ วางโค้ดพิเศษในไฟล์ .htaccess ของโฟลเดอร์ที่คุณต้องการปิดการรัน PHP
หมายเหตุ: สำรองข้อมูลไซต์ก่อนแก้ไขไฟล์ ข้อผิดพลาดเพียงอย่างเดียวในขั้นตอนที่เราจะทำ อาจทำให้ไซต์เสียหายหรือก่อให้เกิดปัญหาอื่นๆ การสำรองข้อมูลจะช่วยให้คุณกู้คืนไซต์ที่ทำงานได้เร็วขึ้นเมื่อมีปัญหา
ขั้นตอนที่ 1: เพื่อปิดการรัน PHP ในโฟลเดอร์ Uploads ให้สร้างไฟล์ .htaccess ในโฟลเดอร์ Upload คุณจะพบโฟลเดอร์นี้ใน wp-content ภายใต้ public_html
ขั้นตอนที่ 2: เปิด Notepad (Windows) หรือ TextEdit (Mac) เพื่อสร้างไฟล์ ใส่โค้ดต่อไปนี้และบันทึกไฟล์นี้เป็น .htaccess (ไม่ใช่ .htaccess.txt):
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
ขั้นตอนที่ 3: บันทึกโค้ดและอัปโหลดไฟล์ไปในโฟลเดอร์ Upload
ขั้นตอนที่ 4: ตอนนี้คุณมีไฟล์ .htaccess ใหม่ในโฟลเดอร์ Upload คลิกขวาและเลือก Edit วางโค้ดต่อไปนี้ในไฟล์ .htaccess ใหม่ของคุณ
<FilesMatch “\.(php|php\.)$”> Order Allow,Deny Deny from all </FilesMatch>
ในภาพด้านล่าง เราวางโค้ดในไฟล์ .htaccess ของเรา
สิ่งนี้ทำให้ไฟล์ที่มี "PHP" ถูกจับและป้องกันไม่ให้รัน หากแฮกเกอร์อัปโหลดไฟล์อย่าง "mailciousPHPFileDisguisedAsJPEFfile.php.jpg" จะถูกบล็อกไม่ให้รัน
เพื่อความปลอดภัยสูงสุด คุณสามารถเพิ่มโค้ดเหล่านี้ในไฟล์ .htaccess ของโฟลเดอร์ปลั๊กอินและธีมได้เช่นกัน
การปิดการรัน PHP ด้วยตนเองมีความเสี่ยง ต้องระมัดระวังใน File Manager ข้อผิดพลาดเพียงอย่างเดียวอาจทำลายไซต์อย่างรุนแรง การใช้ปลั๊กอินปิดการรัน PHP จะง่ายกว่าและปลอดภัยกว่า MalCare Security Service มีฟีเจอร์ Site Hardening ที่อนุญาตให้ผู้ใช้บล็อกการรัน PHP
คุณจะต้องใช้รายละเอียด FTP เพื่อเปิดใช้งานฟีเจอร์นี้
การปิดการรัน PHP ทำให้ความปลอดภัยของไซต์แข็งแกร่งขึ้น แต่เราสามารถไปต่ออีกขั้นโดยการปิดการเรียกดูไดเรกทอรี
หยุดการเรียกดูไดเรกทอรี: ทำไมและอย่างไร?
บางครั้งผู้เยี่ยมชมสามารถดูรายการไดเรกทอรีของไซต์ WordPress ได้ง่ายๆ ตัวอย่างเช่น ผู้เยี่ยมชมเว็บไซต์ Westworld Fansite ของเราสามารถดูไฟล์ในโฟลเดอร์ wp-includes ได้โดยเพียงแค่เปิด "https://westworldfansite.com/wp-includes/" ในเบราว์เซอร์
มันอาจดูไม่เป็นอันตราย แตการแสดงรายการไดเรกทอรีอาจเปิดเผยข้อมูลละเอียดอ่อนที่แฮกเกอร์สามารถใช้ประโยชน์เพื่อเข้าถึงไซต์ของคุณได้ ดังนั้นเราจึงต้องซ่อนการแสดงรายการ แม้การรักษาความปลอดภัยโดยการปิดบัง (security by obscurity) จะมักถูกดูถูก แต่การซ่อนข้อมูลให้มากที่สุดก็เป็นที่ดีที่สุด ยิ่งแฮกเกอร์รู้น้อย ยิ่งโอกาสโจมตีน้อย
เพื่อเสริมสร้างความปลอดภัยของไซต์ เราตัดสินใจปิดการเรียกดูไดเรกทอรีโดยการวางโค้ดต่อไปนี้ในไฟล์ .htaccess
จำไว้: สำรองข้อมูลไซต์ก่อนแก้ไขไฟล์ .htaccess ข้อผิดพลาดเพียงอย่างเดียวอาจก่อให้เกิดปัญหาใหญ่โต การสำรองข้อมูลจะช่วยให้คุณกู้คืนไซต์ที่ทำงานได้เร็วขึ้นเมื่อมีปัญหา
และจำไว้: ให้แก้ไขไฟล์ .htaccess ของไดเรกทอรีที่คุณต้องการป้องกันไม่ให้ผู้ใช้เรียกดู ตัวอย่างเช่น คุณต้องการป้องกันโฟลเดอร์ wp-include ให้วางบรรทัดต่อไปนี้ในไฟล์ .htaccess ของโฟลเดอร์ wp-include:
Options All –Indexes
หลังจากบันทึกโค้ด เราลองดูรายการไดเรกทอรี และหน้าข้อผิดพลาด 403 ปรากฏขึ้น
มาสรุป
การปิดการรัน PHP และการเรียกดูไดเรกทอรี สามารถปรับปรุงความปลอดภัยของเว็บไซต์ได้แน่นอน แต่เพียงหนึ่งในหลายวิธีในการรักษาความปลอดภัย WordPress จากการโจมตีแฮก ขั้นตอนความปลอดภัยอื่นๆ ที่คุณสามารถทำได้ ได้แก่ การใช้ปลั๊กอินความปลอดภัย, ใช้ SSL certificate, ใช้ชื่อผู้ใช้และรหัสผ่านที่แข็งแกร่งและไม่ซ้ำกัน, ใช้การยืนยันตัวตน HTTP และ Two-Factor Authentication (2FA) ฯลฯ