บทความและสาระน่ารู้
ส่วนบริการลูกค้า > บทความและสาระน่ารู้ > ความหมายของ register_globals
ความหมายของ register_globals
| register_globals เป็นค่าตั้งของระบบในภาษา PHP ซึ่งเป็นตัวกำหนดว่า ในโค๊ด php จะให้ค่าในตัวแปร มึค่าตามที่ส่งมาทาง get,post หรือ session โดยอัตโนมัติหรือไม่
register_global=On ตัวแปรที่ส่งมาสามารถเรียกใช้ได้โดยอ้างชื่อได้ทันที เช่น $variable register_global=Off หากต้องการรับค่าที่ส่งมาจะต้องรับผ่านตัวแปรระบบ เช่น $_REQUEST["variable"]
ปัญหาเรื่องความปลอดภัยเมื่อ register_globals=On การเขียนโค๊ด PHP ในสภาพแวดล้อม register_globals=On หากไม่เขียนโค๊ดให้รัดกุมเพียงพอ อาจจะทำให้เว็บง่ายต่อการถูกเจาะข้อมูล
ตัวอย่าง
ไฟล์นี้ชื่อ auth.php
<?php
// ให้ $authorized = true เมื่อระบุชื่อและรหัสผ่านถูกเท่านั้น
if ( authenticated_user
()) {
$authorized = true
; }
if ( $authorized
) { include "/highly/sensitive/data.php"
; }
?>
จะเห็นว่าโค๊ดด้านบนนี้ ไม่ได้กำหนด ค่าเริ่มต้นของ $authorized ให้เป็น false จึงทำให้ระบบของท่านถูกเจาะได้ เพียงเรียกผ่านหน้าเว็บ auth.php?authorized=1 ถึงแม้จะใส่ชื่อและรหัสผ่านผิด
การแก้ไขโค๊ดที่ทำงานผิดพลาดในสภาพแวดล้อม register_globals=Off หากเว็บของท่านเคยทำงานได้ปกติในสภาพแวดล้อม register_globals=On แต่เกิดปัญหาเมื่อนำมาใช้งานในสภาพแวดล้อม register_globals=Off ท่านต้องตรวจสอบในส่วนการรับ-ส่ง ค่าตัวแปร หากท่านเรียกใช้ตัวแปรตามชื่อที่ส่งมาโดยตรง ท่านต้องแก้ไขให้อยู่ในรูปแบบตัวแปรระบบ $_REQUEST["ชื่อตัวแปร"] แทน
ตัวอย่าง สมมติท่านต้องการส่งค่า id ไปที่หน้า submit.php http://www.yourdomian.com/submit.php?id=10
โค๊ด submit.php เดิม (สามารถทำงานได้ถูกต้องเฉพาะ register_globals เป็น on):
<?php if ($id==10) return true; ?>
โค๊ด submit.php ที่แก้ไขแล้ว (สามารถทำงานได้ถูกต้องทั้ง register_globals เป็น on หรือ off):
<?php if ($_REQUEST["id"]==10) return true; ?>
หรือ
<?php $id = $_REQUEST["id"]; if ($id==10) return true; ?>
ข้อมูลเพิ่มเติม
http://www.php.net/manual/en/language.variables.predefined.php http://th.php.net/register_globals
http://www.yes-hosting.com/support/index.php?_m=knowledgebase&_a=viewarticle&kbarticleid=102
|
Add to Favourites
สั่งพิมพ์บทความ/เนื้อหานี้
|
Powered by WHMCompleteSolution