รักษาความปลอดภัยรหัส PHP ของคุณ

  • มันเป็นสิ่งสำคัญเพื่อให้มั่นใจว่าข้อมูลที่ปลอดภัยจากผู้ใช้ (แบบฟอร์มและ URL อื่น ๆ ) นอกเหนือจากเซิร์ฟเวอร์ OS และเซิร์ฟเวอร์ http ส่วนใหญ่เป็นเพราะการโจมตีเว็บ
  • มี 3 หมวดหมู่เพื่อรักษาความปลอดภัยรหัส PHP ของคุณ:

ตรวจสอบผู้ใช้ข้อมูล

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

ตรวจสอบข้อมูลจาก URL หรือแบบฟอร์ม

ข้อมูลเกือบทั้งหมดที่ได้รับมาจาก URL หรือแบบฟอร์มที่ผู้ดูแลเว็บได้ตั้งไว้ พารามิเตอร์การแสดงผล URL เกือบทั้งหมดระบุด้านล่าง:

/index.php?rub=25

อย่างไรก็ตามพารามิเตอร์นี้ไม่ควรแก้ไข แต่นี่เป็นไปได้ดังต่อไปนี้:

 /index.php?rub=0 /index.php?rub= /index.php?rub=aaaaAAAAAAaaaa /index.php?rub=1+or+1 
  • มันเป็นสิ่งสำคัญที่จะตรวจสอบว่ารูปแบบที่ได้รับผ่าน URL หรือรูปแบบที่คาดว่าจะเป็นประเภทข้อมูล
  • คุณสามารถใช้ฟังก์ชัน filter_input () เพื่อตรวจสอบสิ่งเดียวกันได้
  • ตัวอย่างเช่นหากคุณได้รับอีเมลจากผู้ใช้จากโพสต์รูปแบบที่มีชื่อฟิลด์เป็นอีเมล คุณสามารถกู้คืนได้โดย:

 $ email = filter_input (INPUT_POST, 'อีเมล', FILTER_VALIDATE_EMAIL); ถ้า ($ email) {// รายการที่อยู่อีเมลเป็นรูปแบบที่อยู่อีเมลจริง ๆ } 

ฟังก์ชั่นนี้สามารถกรองหลายสิ่ง: ที่อยู่ IP, URL ฯลฯ อาจมีการปรับเปลี่ยนเช่นสตริงการเข้ารหัสก่อนที่จะส่งผ่าน URL เป็นกระบวนการโดย htmlentities ()

  • สามารถใช้ตัวกรองหลายตัวร่วมกันโดยใช้ "|" .
  • หากต้องการตรวจสอบที่อยู่ IP ภายใต้รูปแบบ Ipv4:

$ ip = filter_input (INPUT_GET, 'ip', FILTER_VALIDATE_IP | FILTER_FLAG_IPV4);

คลิกที่ลิงค์ต่อไปนี้สำหรับตัวกรอง:

//www.php.net/filter

ข้ามเนื้อหาที่แสดงของ URL

เมื่อเนื้อหาที่ป้อนโดยผู้ใช้จะปรากฏบนหน้าจอมันมี HTML หรือรหัส JavaScript ซึ่งทำให้การป้องกันภาคบังคับ

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

echo htmlentities ($ _ REQUEST ['เนื้อหา']);

หากเนื้อหาควรจะแสดงใน URL: คุณต้อง urlencode เนื้อหา

PHP มีสองฟังก์ชันในการเข้ารหัสนี้: urlencode () และ rawurlencode () ความแตกต่างระหว่างทั้งสองฟังก์ชั่นคือการเข้ารหัสของพื้นที่ซึ่งในฟังก์ชั่นแรกให้และให้% 20 และ "+" ในครั้งที่สอง

 echo '//www.website?valeur='.urlencode($_REQUESTه'value']); 

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

 $ query = 'SELECT id จาก matable WHERE user = "'. mysql_escape_string ($ _ REQUEST ['user']). '"'; 

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

 $ query = 'SELECT id จาก mytable WHERE user = "'. stripslashes (mysql_escape_string ($ _ REQUEST ['user'])). '"'; 
บทความก่อนหน้านี้ บทความถัดไป

เคล็ดลับยอดนิยม