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 แต่ไม่ค่อยแนะนำวิธีนี้