การเขียน PHP script ใน environment register_globals=Off - HOSTNEVERDIE
Elementor Pro ปกติราคา 1,750 บาท/ปี โปรโมชั่นพิเศษ WordPress Hosting พร้อม Elementor Pro เริ่ม 1,499 บาท/ปี

ฐานความรู้

การเขียน PHP script ใน environment register_globals=Off

register_globals เป็นค่า config ของระบบในภาษา PHP ที่เป็นตัวกำหนดว่า ใน php script จะให้ค่าในตัวแปร

มึค่าตามที่ส่งมาทาง get,post หรือ session โดยอัตโนมัติหรือไม่

register_global=On
ตัวแปรที่ส่งมาสามารถเรียกใช้ได้โดยอ้างชื่อได้ทันที เช่น $variable
register_global=Off หากต้องการรับค่าที่ส่งมาจะต้องรับผ่านตัวแปรระบบ เช่น $_REQUEST["variable"]

HostNeverDie ได้ตั้งค่า register_global=Off ไว้เพราะหากไม่เขียน script ให้รัดกุมเพียงพอ อาจจะทำให้เว็บง่ายต่อการถูกเจาะข้อมูล


ตัวอย่าง

ไฟล์นี้ชื่อ login.php
// ให้ $login= true เมื่อระบุ username และ password ถูกเท่านั้น
if (authenticated_user()) {
$login = true;
}
if ($login ) {
include "confidential-data.php";
}
?>


จะเห็นว่า script ด้านบนนี้ ไม่ได้กำหนด ค่าเริ่มต้นของ $login ให้เป็น false

จึงทำให้ระบบของท่านถูกเจาะได้เพียงเรียกผ่านหน้าเว็บ login.php?login=1

ถึงแม้จะใส่ username และ password ผิดแต่หาก register_globals=Off

ไม่มีปัญหาใดๆ เพราะค่า $login ส่งมาทาง request ไม่ได้

 

การแก้ไข script ที่ทำงานผิดพลาดในสภาพแวดล้อม register_globals=Off

ให้ใส่ $_POST, $_GET, หรือ $_REQUEST หน้าตัวแปรที่เป็นปัญหาเช้น

 

if ($id==10) return true;
?>

 

ให้เปลี่ยนเป็น


if ($_REQUEST["id"]==10) return true;
?>

หรือแก้ง่ายๆ โดย ใส่ php_flag register_globals On
ใน file .htaccess แต่ไม่ค่อยแนะนำวิธีนี้

  • 44 ผู้ใช้งานชอบบทความนี้
ชอบบทความนี้?