แนวทางปฏิบัติที่ดีที่สุดด้านความปลอดภัย 12 อันดับแรกสำหรับ PHP

เผยแพร่แล้ว: 2021-08-14

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


1. อัปเดตเวอร์ชัน PHP ของคุณเป็นประจำ

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

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

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

โลโก้ PHP

2. ห้ามเปิดเผยข้อมูลที่ละเอียดอ่อนต่ออินเทอร์เน็ตผ่านการเชื่อมต่อที่ไม่ได้เข้ารหัส

เว็บไซต์หลายแห่งยังคงมีความเสี่ยงเนื่องจากนักพัฒนาของพวกเขาทำผิดพลาดในการเปิดเผยฐานข้อมูลหรือข้อมูลประจำตัวของระบบไฟล์บนอินเทอร์เน็ตสาธารณะโดยใช้โปรโตคอล FTP ที่ไม่มีการป้องกัน บัญชีอีเมลที่ไม่มีการป้องกัน SSL ฯลฯ

ปกป้องไฟล์และโฟลเดอร์เหล่านี้ด้วยการเข้ารหัสก่อนส่งผ่านการเชื่อมต่อเครือข่ายที่ไม่ได้เข้ารหัสด้วย TLS/SSL

กราฟิกล็อคการรักษาความปลอดภัย

3. ป้องกันการโจมตีด้วยการฉีด SQL

ช่องโหว่การฉีด SQL (Structured Query Language) เกิดขึ้นเมื่อผู้ใช้ป้อนข้อมูลภายในแบบสอบถามโดยไม่มีการตรวจสอบความถูกต้องของประเภทและเจตนา ซึ่งทำให้ความน่าเชื่อถือของผลลัพธ์ที่แสดงโดยการต่อข้อความค้นหาที่เชื่อมเข้าด้วยกันจากสตริงที่ส่ง

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

วิธีที่ดีที่สุดในการป้องกันการโจมตีด้วยการฉีด SQL คือการรักษาความปลอดภัยอินพุต - ป้องกันไม่ให้แฮกเกอร์ฉีดโค้ดของตัวเองลงในเว็บไซต์ผ่านช่องแบบฟอร์มหรือแยกกล่อง คุณต้องการฆ่าเชื้อค่าที่ผู้ใช้ส่งมาก่อนที่จะแทรกลงในแบบสอบถาม SQL เช่น: $input = filter_var($_POST['field'], FILTER_SANITIZE_STRING); if(!empty($input)){ echo “คุณป้อน: “.$input”

“; }else{echo 'โปรดป้อนบางอย่าง';} สังเกตว่าเราใช้ blank () อย่างไรเพื่อให้แน่ใจว่าไม่มีฟิลด์ว่าง

ล็อคความปลอดภัยในแถวสีน้ำเงินทั้งหมด ยกเว้นอันที่เป็นสีแดงตรงกลางและปลดล็อคแล้ว

4. ตรวจสอบให้แน่ใจว่าคุณกำลังจัดเก็บข้อมูลที่ละเอียดอ่อนอย่างปลอดภัย

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

เพื่อลดความเสี่ยงของการโจมตีดังกล่าว ให้ใช้อัลกอริธึมการเข้ารหัสที่รัดกุมเสมอเมื่อจัดเก็บข้อมูลที่สำคัญในฐานข้อมูลของคุณ ควรใช้การเข้ารหัส AES 128 บิต เช่น SHA512_RSA

นอกจากนี้ยังมีซอฟต์แวร์ที่ช่วยให้จัดการฐานข้อมูลที่เข้ารหัสได้ง่ายขึ้น: MySQL Encryption Utilities (MEU) สิ่งสำคัญที่ควรทราบคือ MEU จะเข้ารหัสเฉพาะช่องข้อความในฐานข้อมูล MySQL แต่ก็ดีเพียงพอสำหรับกรณีการใช้งานส่วนใหญ่

คนทำงานบนชั้นวางเซิร์ฟเวอร์

5. อย่าใช้รหัสผ่านซ้ำ

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

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

ชื่อผู้ใช้และรหัสผ่านเข้าสู่ระบบช่อง

6. ตรวจสอบให้แน่ใจว่าแอปพลิเคชันของคุณไม่เสี่ยงต่อการโจมตี XSS

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

ช่องโหว่นี้สามารถใช้ประโยชน์ได้โดยใช้การตรวจสอบความถูกต้องของแบบฟอร์ม JavaScript บนหน้าเว็บ เพื่อให้ข้อมูลที่ป้อนโดยผู้เยี่ยมชมได้รับการดำเนินการโดยอัตโนมัติผ่านการรีเฟรชหน้า แสดงไฮเปอร์ลิงก์ที่มีเนื้อหาที่ใช้งานอยู่ เช่น รูปภาพภายใน และผนวกพารามิเตอร์ที่ผู้ใช้ระบุลงใน URL แบบไดนามิก เช่น '? บัญชี=123' เป็นต้น

แฮ็กเกอร์นั่งอยู่ที่โต๊ะ

7. ป้องกันการโจมตี CSRF

CSRF (Cross-Site Request Forgery) เป็นการโจมตีประเภทหนึ่งซึ่งมีการส่งคำสั่งที่ไม่ได้รับอนุญาตจากเว็บไซต์ของผู้โจมตีไปยังเว็บแอปพลิเคชันของคุณ ซึ่งอาจนำไปสู่การจี้เซสชันหรือการขโมยคุกกี้ เป็นต้น

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

คนแฮ็ค

8. อย่าลืมแพทช์ปกติ!

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

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

บุคคลที่แฮ็คด้วยคำว่าความปลอดภัยที่อยู่ข้างหลังพวกเขา

9. อย่าปล่อยให้โหมดแก้ไขข้อบกพร่องถูกเปิดใช้งานในสภาพแวดล้อมการผลิต

รหัสการดีบักมักจะมีความสามารถในการเปิดใช้งานสิ่งต่าง ๆ เช่นการแก้ไขไฟล์ระยะไกล (โดยใช้ fopen()) และสร้างแบบสอบถาม SQL ดิบผ่าน mysql_query()

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

กราฟิคของแว่นขยายเหนือแมลงบนหน้าจอคอมพิวเตอร์

10. ตรวจสอบไฟร์วอลล์สำหรับพอร์ตที่เปิดอยู่

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

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

คนกำลังดูหน้าจอคอมพิวเตอร์ที่มีรหัสอยู่

11. ห้ามใช้ “admin” เป็นชื่อบัญชี

หากคุณต้องการป้องกันตัวเองจากการให้ผู้อื่นเข้าถึงไซต์ของคุณด้วยการเดารหัสผ่าน ลองใช้ชื่อผู้ใช้อื่น เช่น “admin” หรืออย่างอื่นที่ไม่ชัดเจน

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

แป้นบนแป้นพิมพ์ที่มีลายนิ้วมือเป็นแป้น

12. ติดตามข่าวสารล่าสุดด้วยช่องโหว่ใหม่

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

การติดตามการอัปเดตทั้งหมดอาจเป็นเรื่องยาก แต่โชคดีที่ตอนนี้มีเครื่องมือมากมายที่ช่วยให้งานนี้ง่ายขึ้นกว่าที่เคย เครื่องมือดังกล่าวเรียกว่า 'Debian Long Term Support' ซึ่งได้รับการออกแบบมาเพื่อรองรับระบบปฏิบัติการหลายเวอร์ชันและซอฟต์แวร์ทุกประเภท รวมถึงเว็บเซิร์ฟเวอร์ที่มี PHP

คนยิ้มให้กล้องขณะใช้คอมพิวเตอร์

บทสรุป

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