ช่องโหว่ PHP วิธีแก้ไข

ด้วยส่วนแบ่งการตลาด 45.43% PHP เป็นภาษาเชิงปฏิบัติที่ใช้กันอย่างแพร่หลายสำหรับการพัฒนาเว็บแอปพลิเคชัน เป็นเครื่องมือที่ใช้สำหรับเว็บแอปพลิเคชันแบบไดนามิกและมีประสิทธิภาพ และเหมือนกับภาษาโปรแกรมทั้งหมด ยังคงมีความเสี่ยงและอาจมีข้อบกพร่องด้านความปลอดภัย บทความนี้จะแนะนำวิธีการรักษาความปลอดภัยเว็บไซต์ของคุณจากช่องโหว่ PHP ทั่วไป เช่น การโจมตีด้วยการฉีด SQL, การเขียนสคริปต์ข้ามไซต์, การแก้ไขเซสชัน ฯลฯ

คุณเคยได้ยินคำว่า “PHP is dead” บ่อยแค่ไหน?

  • PHP มีมายาวนานกว่า 25 ปี
  • PHP เป็นพลังที่อยู่เบื้องหลัง80% ของเว็บไซต์ .
  • PHP เป็นฐานสำหรับโครงสร้างพื้นฐานด้านการประมวลผลของบริษัทยักษ์ใหญ่หลายแห่ง
  • PHP มีรายชื่อ 'Stars' ที่น่าประทับใจเช่น WordPress, Facebook, Slack, Etsy และ Mailchimp

ด้วยลักษณะแบบไดนามิก ความน่าเชื่อถือมหาศาล และความนิยมที่สม่ำเสมอในแวดวงเทคโนโลยีและการค้าปลีก PHP เชิญอภิปรายและอภิปรายบ่อยครั้งมาก – และประเด็นที่เกี่ยวข้องกับความปลอดภัยอยู่ในอันดับต้น ๆ ของรายการ! ฐานผู้ใช้ขนาดใหญ่และชุมชนที่ใช้งานทำให้ PHP เสี่ยงต่อการโจมตีอย่างต่อเนื่องและภัยคุกคามด้านความปลอดภัย

การวิจัยแสดงให้เห็นว่า PHP มีข้อบกพร่องด้านความปลอดภัยสูงสุด ทำให้เป็นเหยื่อในอุดมคติสำหรับอาชญากรไซเบอร์ ภาษามีช่องโหว่ระดับแอปพลิเคชันซึ่งทำให้เสี่ยงต่อการโจมตีที่เป็นอันตราย

เหตุใด PHP จึงไม่ปลอดภัย

แม้ว่าภาษาอาจไม่ปลอดภัยทั้งหมดหรือโดยเนื้อแท้ก็ตาม PHP เริ่มต้นด้วยช่องโหว่ด้านความปลอดภัยขั้นพื้นฐาน PHP ไม่ได้สร้างขึ้นโดยใช้หลักการแนะนำ Secure By Design ซึ่งรวมเอาคุณลักษณะด้านความปลอดภัยไว้ในซอฟต์แวร์ตั้งแต่ต้นจนจบ เพื่อให้ผู้ใช้ปลายทาง/โปรแกรมเมอร์ไม่ต้องดิ้นรนผ่านขั้นตอนต่างๆ เพื่อดูว่าจะรักษาความปลอดภัยให้กับการใช้งานได้อย่างไร

แอปพลิเคชันและไลบรารีทั้งหมดที่เขียนด้วย PHP มีช่องโหว่ด้านความปลอดภัยขั้นพื้นฐาน ไม่มีฟังก์ชันพื้นฐาน และ PHP ทำลายการป้องกันที่จำเป็นต่อการโจมตีที่อาจเกิดขึ้น

มีฟังก์ชัน PHP เพียงพอที่จะทำงานของระบบ เช่น การจัดการไฟล์ การเข้าถึงฐานข้อมูล และการทำงานของเครือข่าย ผู้โจมตีสามารถใช้ฟังก์ชันเหล่านี้เพื่อประนีประนอมและควบคุมเซิร์ฟเวอร์ผ่านแอปพลิเคชันเว็บเชลล์

แม้ว่าข้างต้นจะบ่งบอกว่าความรับผิดชอบในการรักษาความปลอดภัยตกอยู่ที่ผู้ใช้ปลายทาง แต่ก็ไม่ได้หมายความว่าเราจะสามารถท้าทายหรือตั้งคำถามเกี่ยวกับสถานะของ PHP ในฐานะภาษาได้ มีวิธีระบุและแก้ไขช่องโหว่ของ PHP ก่อนที่มันจะโจมตีเซิร์ฟเวอร์ของคุณ สร้างความเสียหายต่อชื่อเสียงของคุณ และทำให้คุณเสี่ยงต่อการถูกฟ้องร้องโดยการเปิดเผยข้อมูลผู้ใช้

ช่องโหว่ PHP 9 อันดับแรกและวิธีแก้ไข

ช่องโหว่ของโค้ด PHP เป็นผลมาจากช่องว่างที่เหลือขณะเขียนโค้ดต้นฉบับ คุณสามารถพูดได้ว่า 'ช่องโหว่' เกิดขึ้นเนื่องจากการป้อนข้อมูลของผู้ใช้ที่ 'ไม่ถูกสุขอนามัย' เว็บแอปพลิเคชันยอมรับอินพุตจากผู้ใช้ และหากข้อมูลมีโค้ดที่เป็นอันตราย ข้อมูลนั้นจะถูกส่งต่อไปยังแอปพลิเคชันและสร้างช่องโหว่ การรันสคริปต์บนอินพุตที่ไม่ถูกสุขอนามัยสามารถสร้างช่องโหว่ได้

รายการด้านล่างเป็นช่องโหว่ที่สำคัญบางประการของ PHP

1. Cross-site Scripting (XSS) Attack

การโจมตีแบบสคริปต์ข้ามไซต์เกิดขึ้นเมื่อผู้โจมตีใส่โค้ด HTML หรือ JavaScript ที่เป็นอันตรายลงในเว็บไซต์ของคุณเพื่อขโมยรหัสผ่านและคุกกี้ของผู้ใช้หรือรับสิทธิ์การเข้าถึงระดับผู้ดูแลระบบ

มาทำความเข้าใจว่าการเขียนสคริปต์ข้ามไซต์ทำงานอย่างไรโดยใช้ตัวอย่าง สมมติว่าคุณเขียนรหัสต่อไปนี้เพื่อแสดงข้อความต้อนรับบนเว็บไซต์ของคุณ

จุดประสงค์ของรหัสนี้คือการพิมพ์ข้อความต้อนรับไปยังผู้ใช้ที่เข้าสู่ระบบ ชื่อผู้ใช้ถูกดึงข้อมูลโดยใช้ตัวแปร GET ที่เก็บค่าของพารามิเตอร์สตริงการสืบค้นในรูปแบบของคู่ที่ส่งผ่านเมธอด HTTP GET

เซิร์ฟเวอร์จะส่งคืนผลลัพธ์ต่อไปนี้:

Welcome user1 (user1 is the fetched user name. Let’s say John, Steve, or Mark.)

ผู้ใช้ที่ประสงค์ร้ายสามารถแก้ไขโค้ดนี้เพื่อใช้ประโยชน์จากช่องโหว่ XSS หากเว็บไซต์ของคุณไม่ปฏิบัติตามมาตรการรักษาความปลอดภัย ด้วยเหตุนี้ พวกเขาจึงสามารถควบคุมเบราว์เซอร์ ใช้การล็อกคีย์เพื่อขโมยรหัสผ่าน หรือแม้แต่ขโมยคุกกี้ การโจมตี XSS เพียงครั้งเดียวอาจทำให้คุณสูญเสียธุรกิจและชื่อเสียงนับล้าน

การโจมตีแบบสคริปต์ข้ามไซต์มีอยู่สามประเภท ได้แก่ แบบสะท้อน แบบถาวร และ XSS แบบ DOM

  • Reflected XSS Attacks:นี่คือช่องโหว่ XSS ที่พบบ่อยที่สุด เกิดขึ้นเมื่อข้อมูลผู้ใช้ที่ไม่น่าเชื่อถือถูกส่งไปยังเว็บแอปพลิเคชันและสะท้อนกลับเป็นเนื้อหาที่ไม่น่าเชื่อถือ ช่องโหว่นี้เกิดขึ้นที่ฝั่งเซิร์ฟเวอร์
  • Persistent XSS:การโจมตี XSS นี้จัดเก็บภายในเว็บแอปพลิเคชันในฐานข้อมูล แทนที่จะสะท้อนการป้อนข้อมูลของผู้ใช้ที่เป็นอันตรายในการตอบกลับ เมื่อมันเกิดขึ้น มันจะสะท้อนกลับไปยังผู้ใช้เว็บแอปพลิเคชันทั้งหมด ข้อบกพร่องประเภทนี้เกิดขึ้นในโค้ดฝั่งเซิร์ฟเวอร์
  • DOM-based XSS:ผู้โจมตีดำเนินการโจมตี XSS นี้โดยแก้ไขสภาพแวดล้อม DOM ในเบราว์เซอร์ของเหยื่อ เป็นไปได้หากเว็บแอปพลิเคชันเขียนข้อมูลไปยัง document object model (DOM) โดยไม่มีการฆ่าเชื้อที่เหมาะสม การโจมตีมีอยู่ในโค้ดฝั่งไคลเอ็นต์เท่านั้น

คุณจะปกป้องเว็บไซต์ของคุณจากการโจมตี XSS ได้อย่างไร?

  • ใช้ไฟร์วอลล์ของเว็บแอปพลิเคชัน (WAF) เช่น Cloudflare มันบล็อกโค้ดที่อาจเป็นอันตราย และทำให้แน่ใจว่าไม่มีการดำเนินการใด ๆ บนเว็บไซต์ของคุณโดยไม่ได้รับอนุญาตจากคุณ
  • ใช้ส่วนหัวการป้องกัน XSS เพื่อเปิดใช้งานตัวกรองข้ามไซต์สคริปต์บนเบราว์เซอร์ของคุณ มันจะฆ่าเชื้อหน้าของคุณโดยอัตโนมัติทุกครั้งที่ตรวจพบการโจมตีสคริปต์
  • ใช้ฟังก์ชัน htmlspecialchars() และ htmlentities() ซึ่งแปลงอักขระพิเศษเป็นเอนทิตี HTML ด้วยวิธีนี้ คุณจะหลีกเลี่ยงสตริงจากแหล่งที่ไม่รู้จัก เช่น อินพุตของผู้ใช้ และป้องกันการโจมตี XSS
  • ใช้ฟังก์ชัน strip_tags() เพื่อลบเนื้อหาระหว่างแท็ก HTML และตรวจสอบให้แน่ใจว่าไม่ได้เข้ารหัสหรือกรองวงเล็บเหลี่ยมปิดที่ไม่ได้จับคู่
  • ฟังก์ชัน addslashes() ยังสามารถป้องกันการโจมตี XSS ได้ด้วยการหยุดผู้โจมตีจากการยกเลิกการกำหนดตัวแปรและเพิ่มโค้ดปฏิบัติการในตอนท้าย
  • ใช้ส่วนหัวของนโยบายความปลอดภัยเนื้อหา (CSP) เพื่ออนุญาตชุดของแหล่งที่มาที่เชื่อถือได้และกำหนดข้อจำกัดในการดำเนินการของผู้โจมตี
  • Libraries PHP ของ third-party บางประเภท เช่น htmLawed, PHP Anti-XSS และโปรแกรมกรอง HTML ยังสามารถป้องกันเว็บไซต์ของคุณจากการโจมตีจากการโจมตี XSS ได้อีกด้วย


2. Cross-site Request Forgery (CSRF) Attack

การโจมตี CSRF หลอกให้เจ้าของเว็บไซต์คลิกลิงก์ที่เป็นอันตรายซึ่งสามารถแทนที่การเข้าถึงที่มองไม่เห็น ขโมยข้อมูลเซสชัน หรือส่งคำสั่งที่ดูถูกต้องไปยังเซิร์ฟเวอร์ในนามของคุณโดยอัตโนมัติ ต่อไปนี้คือตัวอย่างวิธีการทำงานของการโจมตีแบบขอข้ามไซต์

คุณจะป้องกันการโจมตีแบบคำขอข้ามไซต์ (CSRF) ได้อย่างไร?

แนวทางปฏิบัติที่ดีที่สุดของคุณสำหรับการโจมตี CSRF คือการใช้โทเค็นการพิสูจน์ตัวตน เป็นการยากสำหรับแฮกเกอร์ในการดำเนินการที่ได้รับอนุญาตเมื่อมีการสร้างโทเค็นใหม่ในการเข้าสู่ระบบแต่ละครั้ง WordPress ใช้ 'nonce' มีการเปลี่ยนแปลงทุกวัน ทำให้ผู้ประสงค์ร้ายแฮ็คเข้าสู่เว็บไซต์ได้ยาก

อย่างไรก็ตาม ความท้าทายของ 'nonce' คือปลั๊กอินบางตัวของ WordPress ไม่ได้ใช้ ซึ่งอาจแนะนำช่องโหว่ให้กับเว็บไซต์โดยไม่คาดคิด คุณต้องระมัดระวังและตรวจสอบให้แน่ใจว่าปลั๊กอินที่คุณใช้มีระบบ nonce จาก WordPress

3. SQL Injection

ในการใช้ประโยชน์จาก PHP ของการฉีด SQL ผู้โจมตีจะหลอกโค้ดฝั่งเซิร์ฟเวอร์โดยการฉีดคำสั่ง SQL ที่ไม่ถูกสุขอนามัยลงในฐานข้อมูล ด้วยเหตุนี้ การสืบค้นข้อมูล SQL จึงส่งคืนข้อมูลที่เว็บแอปพลิเคชันไม่ได้ตั้งใจจะเปิดเผย เช่น เนื้อหาฐานข้อมูล รายละเอียดส่วนตัว รหัสผ่าน ฯลฯ ในบางครั้ง การโจมตีด้วย SQL Injection อาจอนุญาตให้เข้าถึงทั้งเว็บไซต์ได้

ผู้ใช้ที่เป็นอันตรายสามารถเข้าถึงฐานข้อมูลส่วนหลังของเว็บแอปพลิเคชันด้วยการ SQL Injection จะช่วยให้เขาทำการยกระดับสิทธิ์ในระดับแอปพลิเคชันได้ เมื่อเซิร์ฟเวอร์ SQL ทำงานภายใต้บริบทของผู้ดูแลระบบ (DBO, SA) ผู้ใช้ที่เป็นอันตรายจะสามารถเป็นเจ้าของเซิร์ฟเวอร์ทั้งหมดได้ ต่อไปนี้คือตัวอย่างโค้ดที่เสี่ยงต่อการโจมตีของ SQL-injection

โค้ดข้างต้นมีความเสี่ยงต่อ SQL Injection เนื่องจากไม่มีตัวแปร POST – ชื่อผู้ใช้และรหัสผ่าน – ถูกกรองหรือฆ่าเชื้อ รหัสสุ่มสุ่มสี่สุ่มห้ายอมรับสิ่งที่ชื่อผู้ใช้และรหัสผ่านที่มีอยู่ซึ่งเป็นอันตรายเนื่องจากสามารถประนีประนอมแอปพลิเคชันและเซิร์ฟเวอร์ทั้งหมดในภายหลัง

จะป้องกันการโจมตีด้วย SQL Injection ได้อย่างไร

เพื่อป้องกันการโจมตีด้วย SQL Injection โปรดคำนึงถึงอินพุตที่คุณยอมรับจากผู้ใช้ ใช้การสืบค้นแบบกำหนดพารามิเตอร์และข้อความสั่งที่เตรียมไว้ในโค้ดของคุณ แทนคำถามแบบข้อความธรรมดาที่ไม่มีการป้อนข้อมูลด้านสุขอนามัย

4. File Inclusion Attacks

การโจมตีการรวมไฟล์ใช้ความสามารถของเว็บไซต์ในการยอมรับเนื้อหาที่อัปโหลดเช่นรูปภาพและเอกสารในทางที่ผิด การโจมตีการรวมไฟล์มีอยู่สองประเภท

  • Remote File Inclusion Attack:แฮกเกอร์หลอกโค้ด PHP ของคุณให้ยอมรับ URL ที่มีโค้ดที่เป็นอันตรายเป็นอินพุตที่ถูกต้องในไซต์อื่น ด้วยวิธีนี้ พวกเขาสามารถเข้าถึงเว็บไซต์ของคุณและใช้ประโยชน์จากมันได้ ตัวอย่างเช่น หากคุณมีเว็บไซต์www.myplace.comและแฮ็กเกอร์หลอกให้โค้ด PHP ของคุณรวมไลบรารีwww.goodreviews.com/script.phpที่มีโค้ดที่เป็นอันตราย โค้ดที่เป็นอันตรายจะโหลดเข้าสู่เว็บไซต์ของคุณและอนุญาตให้แฮ็กเกอร์ ละเมิดมัน
  • Local File Inclusion Attack:ผู้โจมตีหลอกล่อโค้ด PHP ของคุณให้ส่งไฟล์ในเครื่องและแสดงเนื้อหาบนหน้าจอ พวกเขาใช้เพื่อเข้าถึงไฟล์ wp-config.php ของเว็บไซต์ WordPress

จะป้องกันการโจมตี File Inclusion ได้อย่างไร?

เพื่อป้องกันการโจมตีเหล่านี้ ให้มองหาการใช้งานที่ไม่ปลอดภัยของฟังก์ชัน include, include_once, fopen, file_get_contents, require และ require_once PHP การโจมตีการรวมไฟล์จากระยะไกลและในเครื่องส่วนใหญ่รวมถึงการโจมตีเหล่านี้ด้วย

นอกจากนี้ คุณสามารถตรวจสอบการตั้งค่าบนแฟล็กเหล่านี้ได้จาก php.ini:

  • allow_url_fopen:ระบุว่าสามารถรวมไฟล์ภายนอกในเว็บไซต์ของคุณได้หรือไม่ ปิดการตั้งค่านี้หากตั้งค่าเริ่มต้นเป็นเปิด
  • Allow_url_include: แฟล็กนี้ระบุว่าฟังก์ชัน include(), require(), include_once() และ require_once() สามารถอ้างอิงไฟล์ระยะไกลได้หรือไม่ การตั้งค่าเริ่มต้นปิดอยู่

5. Session Hijacking

ใน Session Hijacking ผู้โจมตีจะขโมย ID เซสชันของผู้ใช้ เมื่อการโจมตีมี ID เซสชัน สามารถเข้าถึงทุกสิ่งที่เกิดขึ้นระหว่างเซสชันนั้นได้ ตัวอย่างเช่น หากคุณใช้เซสชันนั้นเพื่อเข้าสู่ระบบเว็บไซต์หรือตรวจสอบสิทธิ์ผู้ใช้ ผู้โจมตีสามารถใช้เซสชันนั้นเพื่อลงชื่อเข้าใช้และใช้ประโยชน์จากเว็บไซต์ของคุณ

การ Session Hijacking นั้นอันตราย โดยเฉพาะอย่างยิ่งเมื่อคุณเป็นผู้ดูแลระบบ เนื่องจากเซสชันที่ถูกขโมย ในกรณีนี้ สามารถสร้างความเสียหายที่สำคัญได้

จะป้องกันการ Session Hijacking ได้อย่างไร

คุณสามารถเริ่มต้นด้วยการเปลี่ยนรหัสเซสชันโดยใช้ session_regenrate_id() และป้องกันไม่ให้ JavaScript เข้าถึงข้อมูล ID เซสชันโดยใช้การตั้งค่า session.cookie.httponly ในฟังก์ชัน php.ini และ session_set_cookie_parms() นอกจากนี้ ตรวจสอบให้แน่ใจว่าข้อมูล ID เซสชันไม่ได้จัดเก็บไว้ในโฟลเดอร์ที่เข้าถึงได้แบบสาธารณะ เนื่องจากคุณมีความเสี่ยงหากเกิดเหตุการณ์ดังกล่าว

6. Authentication Bypass

Authentication bypass เป็นผลมาจากข้อผิดพลาดของนักพัฒนา เกิดขึ้นเมื่อแอปไม่ตรวจสอบข้อมูลรับรองของผู้ใช้อย่างถูกต้องและให้สิทธิ์การเข้าถึงโดยยกระดับโดยไม่รู้ตัว ตัวอย่างเช่น นักพัฒนามือใหม่จำนวนมากใช้ฟังก์ชัน is_admin() เพื่อตรวจสอบว่าผู้ใช้มีสิทธิ์เข้าถึงระดับผู้ดูแลระบบหรือไม่ สิ่งที่พวกเขาไม่เข้าใจคือจุดประสงค์ที่แท้จริงของฟังก์ชันคือการยืนยันว่ามีคนกำลังดูหน้าผู้ดูแลระบบอยู่หรือไม่ ด้วยวิธีนี้ พวกเขาให้สิทธิ์การเข้าถึงแก่ผู้ใช้ที่ไม่ถูกต้องซึ่งอาจใช้ในทางที่ผิด

วิธีป้องกันเว็บไซต์ของคุณจาก Authentication bypass

การป้องกันช่องโหว่ PHP ข้ามการ Authentication Bypass จำเป็นต้องมีการตรวจสอบโค้ดโดยนักพัฒนาที่มีประสบการณ์ ช่วยให้มั่นใจได้ว่าจะไม่มีข้อผิดพลาดทางตรรกะเกิดขึ้นในกระบวนการรับรองความถูกต้องและโทเค็น เครื่องมือทดสอบความปลอดภัยของแอปพลิเคชันแบบคงที่สามารถตรวจจับข้อบกพร่องดังกล่าวได้ คุณต้องรู้จักผู้ใช้เป็นอย่างดีก่อนที่จะให้สิทธิ์การเข้าถึง

7. Command Injection

การโจมตีด้วยการ Command Injection ทำงานเหมือนกับ Command Injection SQL ข้อแตกต่างเพียงอย่างเดียวคือการโจมตีด้วยการ Command Injection มุ่งเป้าไปที่ระบบ และผู้โจมตีจะดำเนินการโดยใช้ระบบปฏิบัติการของเซิร์ฟเวอร์เพื่อเรียกใช้คำสั่งโดยอำเภอใจ

จะป้องกันการโจมตีด้วยการ Command Injection ได้อย่างไร

สามสิ่งที่คุณต้องการสำหรับการ Command Injection PHP ที่ประสบความสำเร็จ:

  • แอปพลิเคชันใช้การเรียกของระบบ (passthru, ระบบ หรือสิ่งที่คล้ายกัน)
  • คำสั่งที่ส่งผ่านเป็นอาร์กิวเมนต์ของฟังก์ชันจะถูกสร้างขึ้นโดยใช้อินพุตภายนอกบางส่วน
  • ข้อมูลที่ป้อนไม่ได้รับการตรวจสอบหรือฆ่าเชื้อ

คุณจะต้องลบเงื่อนไขข้างต้นเพื่อป้องกันการโจมตีด้วยคำสั่ง การดำเนินการที่ดีที่สุดคือการหลีกเลี่ยงการเรียกของระบบให้มากที่สุด คุณสามารถใช้ฟังก์ชันในตัวของ PHP เพื่อโต้ตอบกับระบบปฏิบัติการแทนได้ ตัวอย่างเช่น หากต้องการทราบว่ามีไฟล์ใดบ้างในไดเร็กทอรี คุณสามารถใช้ opendir และ readdir ในทำนองเดียวกัน หากต้องการลบไฟล์ คุณสามารถใช้ unlink แทน system("rm $file")

8. PHP Object Injection

ด้วยการโจมตีด้วย PHP Object Injection ผู้โจมตีจะเรียกใช้ฟังก์ชัน unserialize() ด้วยอินพุตของผู้ใช้ที่ไม่ถูกสุขอนามัยเพื่อ PHP Object Injection ลงในหน่วยความจำ การโจมตีด้วย PHP Object Injection ที่ประสบความสำเร็จอาจส่งผลให้เกิดการโจมตีเพิ่มเติม เช่น SQL Injection, Path Traversal หรือแม้แต่การปิดเว็บแอปพลิเคชันโดยสมบูรณ์

จะป้องกันการโจมตีด้วย PHP Object Injection ได้อย่างไร

เพื่อป้องกันการโจมตีด้วย PHP Object Injection ให้ตรวจสอบและล้างข้อมูลแต่ละรายการที่เว็บแอปพลิเคชันของคุณได้รับ จะทำให้แน่ใจว่าไม่มีการส่ง Object PHP และใบสมัครของคุณปลอดภัย

9. Remote Code Execution

ช่องโหว่ PHP สำหรับการเรียกใช้โค้ดจากระยะไกลทำให้ผู้โจมตีสามารถอัปโหลดโค้ดที่เป็นอันตรายไปยังเว็บไซต์ของคุณและเรียกใช้จากระยะไกลได้ เกิดขึ้นเมื่อบั๊กในแอปพลิเคชัน PHP ยอมรับอินพุตของผู้ใช้และตีความว่าเป็นโค้ด PHP ผิด อนุญาตให้ผู้โจมตีสร้างไฟล์ใหม่ที่อนุญาตให้เข้าถึงเว็บไซต์ของคุณได้อย่างสมบูรณ์

การดำเนินการโค้ดจากระยะไกลเป็นเรื่องที่น่ากังวลอย่างยิ่ง เนื่องจากเป็นการง่ายที่จะใช้ประโยชน์และให้ผู้โจมตีสามารถควบคุมเว็บไซต์ของคุณได้อย่างสมบูรณ์

จะป้องกันการโจมตีด้วยการดำเนินการโค้ดจากระยะไกลได้อย่างไร

  • เก็บระบบปฏิบัติการและซอฟต์แวร์ของบริษัทอื่นไว้
  • ล้างข้อมูลที่คุณป้อนอยู่เสมอและตรวจดูให้แน่ใจว่าคุณไม่ได้ประมวลผลข้อมูลเหล่านั้น เว้นแต่คุณจะแน่ใจว่าข้อมูลเหล่านั้นไม่เป็นอันตราย
  • มีโปรโตคอลการตรวจสอบสิทธิ์และการเข้าถึงที่แข็งแกร่ง จะทำให้แน่ใจว่าผู้โจมตีไม่สามารถเข้าถึงระบบหลักได้แม้ว่าจะผ่านโปรโตคอลความปลอดภัยที่มีอยู่แล้วก็ตาม
  • ใช้ไฟร์วอลล์ของเว็บแอปพลิเคชันเพื่อป้องกันผู้โจมตี


ตรวจสอบและล้างข้อมูล

การรักษาความปลอดภัย PHP ทำให้ไซต์ของคุณปลอดภัยจากการเข้าถึงโดยไม่ได้รับอนุญาต คุณสามารถเริ่มดำเนินการนี้ใน PHP ได้โดยการตรวจสอบความถูกต้องและล้างข้อมูลในไซต์ของคุณ

การตรวจสอบความถูกต้องเป็นขั้นตอนเริ่มต้นและเกี่ยวข้องกับการตรวจสอบข้อมูลที่ป้อนสคริปต์ คุณต้องตรวจสอบว่าเป็นประเภทข้อมูลที่คุณต้องการ/ต้องการ รูปแบบ และความยาวของข้อมูลหรือไม่ ถ้าคุณไม่ทำเช่นนี้ คุณจะปล่อยให้ไซต์ของคุณมีช่องโหว่ ตรวจสอบชนิดของข้อมูลที่เข้ามาและความยาวของตัวแปร คุณต้องตรวจสอบให้แน่ใจว่ารูปแบบถูกต้องเพื่อให้สามารถใช้ข้อมูลได้อย่างถูกต้อง

ในกรณีที่การตรวจสอบความถูกต้องเกี่ยวข้องกับการพิจารณาว่าข้อมูลอยู่ในรูปแบบที่เหมาะสมหรือไม่ การฆ่าเชื้อหมายถึงการลบอักขระที่ผิดกฎหมายในข้อมูล ตัวกรอง PHP ช่วยในการฆ่าเชื้อและตรวจสอบอินพุตภายนอก

ส่วนขยายตัวกรอง PHP และตัวกรองขั้นสูงทำการตรวจสอบและฆ่าเชื้ออินพุตภายนอก อินพุตภายนอกเหล่านี้อาจเป็นคุกกี้ ข้อมูลบริการเว็บ ตัวแปรเซิร์ฟเวอร์ และผลลัพธ์การสืบค้นฐานข้อมูล นอกจากนี้ยังอาจเป็นข้อมูลป้อนเข้าของผู้ใช้จากแบบฟอร์ม ฟังก์ชันตัวกรอง filter_var () ตรวจสอบและล้างข้อมูลและกรองตัวแปรด้วยตัวกรองที่ระบุ

ดูตัวอย่างด้านล่าง ฟังก์ชันนี้ใช้เพื่อฆ่าเชื้อและลบอักขระที่ผิดกฎหมายออกจากตัวแปรอีเมล

สรุป

คุณจะปกป้องเว็บแอปพลิเคชัน PHP ของคุณจากการโจมตีทางไซเบอร์ได้อย่างไร

เมื่อพิจารณาถึงขอบเขตของการใช้ PHP ในเว็บแอปพลิเคชัน การรักษาความปลอดภัยจึงไม่ใช่ตัวเลือก - มันเป็นสิ่งจำเป็น คุณสามารถทำตามขั้นตอนต่อไปนี้เพื่อปกป้องแอปพลิเคชันของคุณจากช่องโหว่ PHP

1. ใช้รหัสผ่านที่รัดกุม

การหาประโยชน์จาก PHP ส่วนใหญ่เกิดขึ้นเนื่องจากข้อมูลประจำตัวที่อ่อนแอหรือแตกหักง่าย ดังนั้น รักษารหัสผ่านของคุณให้ปลอดภัยและมีประสิทธิภาพ นี่คือวิธีที่คุณสามารถทำได้:

  • รวมอักขระที่เป็นตัวอักษรและตัวเลขคละกันที่มีทั้งตัวพิมพ์เล็กและตัวพิมพ์ใหญ่
  • ใช้วลีเพราะต้องใช้เวลามากในการถอดรหัส
  • รหัสผ่านของคุณควรมีความยาวอย่างน้อย 7-16 อักขระ ยิ่งนานก็ยิ่งแตกยาก

นอกจากนี้ ให้เปลี่ยนรหัสผ่านของคุณเป็นประจำเพื่อลดโอกาสของแฮ็กเกอร์

2. ใช้การตรวจสอบสิทธิ์แบบหลายปัจจัย

การตรวจสอบสิทธิ์แบบหลายปัจจัยเพิ่มการรักษาความปลอดภัยอีกชั้นหนึ่ง และทำให้มั่นใจได้ว่าผู้โจมตีจะไม่สร้างความเสียหายใดๆ แม้ว่าจะมีข้อมูลประจำตัวก็ตาม ตัวอย่างคือการรับรองความถูกต้องด้วยสองปัจจัยใน WordPress ซึ่งผู้ใช้จะได้รับรหัสเข้าสู่ระบบในอีเมลที่ลงทะเบียนหลังจากป้อนข้อมูลประจำตัว หลังจากเพิ่มรหัสเข้าสู่ระบบแล้ว พวกเขาจะสามารถเข้าถึงบัญชี WordPress ของตนได้

3. ใช้การกรองข้อมูล

การกรองข้อมูลปกป้องเว็บไซต์ของคุณจากข้อมูลโค้ดที่เป็นอันตรายและการโจมตีด้วยการฉีด SQL มีหลายวิธีในการเปิดใช้งานตัวกรองข้อมูล คุณสามารถอุทิศโมดูลเดียวในการรักษาความปลอดภัยและวางไว้ที่จุดเริ่มต้นของสคริปต์ที่เข้าถึงได้แบบสาธารณะทั้งหมด รวมถึงจุดตรวจสอบความปลอดภัยจำนวนมาก หรือมีอักขระและสตริงหลายตัวรวมกัน

4. ใช้ไฟร์วอลล์เว็บแอปพลิเคชัน

ไฟร์วอลล์ของเว็บแอปพลิเคชันเสนอการป้องกันที่สมบูรณ์โดยป้องกันไม่ให้ข้อมูลที่เป็นอันตรายเข้าถึงเว็บไซต์ของคุณ พวกเขาสามารถเป็นทางออกที่ดีที่สุดของคุณสำหรับการโจมตีทางไซเบอร์ต่างๆ Mod_Security (ModSec) เป็นหนึ่งในไฟร์วอลล์ที่เพิ่มความปลอดภัยอีกชั้นหนึ่ง พร้อมใช้งานสำหรับ Linux, Windows, Solaris, FreeBSD และ Mac OS X และทำงานร่วมกับเซิร์ฟเวอร์ Apache HTTP, เซิร์ฟเวอร์ IIS และเซิร์ฟเวอร์ Nginx ได้เป็นอย่างดี

Mod_Security ตรวจสอบและกรองข้อมูลขาเข้าและขาออกจากเว็บเซิร์ฟเวอร์ที่ไม่เป็นไปตามกฎที่กำหนดไว้ นอกจากนี้ยังบล็อกอักขระพิเศษใดๆ ที่ส่งผ่านไปยังตัวแปร GET หรือ POST เพื่อแยกสคริปต์ข้ามไซต์ การฉีด SQL และการโจมตีเว็บมาตรฐานอื่นๆ

0
183