พบกับบทความเกี่ยวกับคอมพิวเตอร์และ programming ได้ที่ http://articles.modoeye.com | บล็อกอาหาร
PHP Articles / register_globals Directive
Administrator
Wed 29 Jun 2005 16:17:01
บทความนี้เกี่ยวกับความปลอดภัยของ PHP ในส่วนของ register_globals ใน php.ini ครับ

โดยเรามาดูว่า register_globals ใช้ทำอะไรก่อนดีกว่าครับ
โดยปกติแล้วการเรียกใช้ตัวแปรตั้งแต่ PHP รุ่นแรกๆแล้วจะใช้การเรียกผ่านตัวแปร เช่น $data โดยถ้ามีการส่งค่าผ่านจากเว็บเพจหนึ่งไปยังอีกเพจหนึ่งสามารถทำได้ เช่น http://www.modoeye.com/index.php?data=1234
ในกรณีนี้เราสามารถสั่งแสดงผลตัวแปร $data ได้โดยตรง เช่น echo $data;

แล้วเกี่ยวกับความปลอดภัยอย่างไรหรือครับ?
ที่ registerglobals เกี่ยวกับความปลอดภัยก็เนื่องจาก ถ้ามีผู้ไม่ประสงค์ดีรู้ว่าตัวแปรใน Code ของเรามีตัวแปรอะไรบ้างเขาก็สามารถล่วงรู้ความลับของระบบของเราได้ง่ายครับ เช่น

<?php
// login.php
// เช็กว่ามีการ login หรือยัง เมื่อมีการล็อกอินแล้วให้เซ็ทค่าตัวแปร $authorized เป็น true
if (authenticated_user()) {
    
$authorized = true;
}

// เช็กว่าตัวแปร $authorized เท่ากับ true หรือไม่ถ้าใช่ให้เข้าไปส่วนของ member ได้
if ($authorized) {
    include
"/member/index.php";
}
?>

จากตัวอย่างจะเห็นว่าเป็นการล็อกอินอย่างง่ายๆครับ ซึ่งถ้ามีการเซ็ท register_globals เป็น On ไว้การที่จะเข้าไปในส่วนของ member นั้นสามารถทำได้โดยการผ่านค่า login.php?authorized=1 ซึ่งจะทำให้ตัวแปร $authorized มีค่าเป็น true ทำให้บุคคลผู้นั้นสามารถเข้าไปในส่วนของ member ได้โดยง่ายครับ

การแก้ไขสามารถทำได้โดยเข้าไปแก้ไขไฟล์ php.ini ครับ
แต่สำหรับท่านที่ใช้บริการ Hosting ซึ่งไม่สามารถเข้าไปแก้ไขได้เอง และ Directive ตัวนี้ไม่สามารถแก้ไขในขณะ runtime ได้ (ini_set() ไม่ได้) ไม่ต้องกังวลครับมีวิธีแก้ไขได้โดยการเขียนไฟล์ .htaccess ขึ้นมาครับ หรือเขียนต่อจากของเดิมก็ได้ในกรณีที่มีไฟล์นี้อยู่แล้ว โดยเขียน

php_flag register_globals Off

แล้วนำไปวางไว้ที่ root ของเว็บไซท์เท่านั้นครับ

Reply
Name:
E-mail:
Home | Services | Forum | Classified | Directories | Support | Contact
ATOM feed RSS 0.9 feed RSS 1.0 feed RSS 2.0 feed
Copyright © 2005 - 2007 Modoeye.com, All Rights Reserved.
Disclaimer | Privacy policy | Term of Use | Term of Services
Valid XHTML Valid CSS! PHP: Hypertext Preprocessor MySQL database Apache Powered! FreeBSD Power to serve
Modoeye Sitemap Client login