REGISTER_GLOBALS: Bahaya Keselamatan PHP
REGISTER_GLOBALS pernah menjadi ciri kontroversi dalam PHP, menyebabkan kutukan yang meluas. Reputasi terkenalnya berpunca daripada risiko keselamatan yang wujud.
Jadi, Apakah Masalah dengan REGISTER_GLOBALS?
REGISTER_GLOBALS secara automatik mencipta pembolehubah global untuk semua parameter permintaan GET dan POST , menjadikannya boleh diakses di mana-mana dalam skrip. Ini menimbulkan ancaman ketara kerana mengakses pembolehubah tidak diisytiharkan hanyalah amaran dalam PHP, bukan ralat.
Pertimbangkan kod hipotesis berikut:
<code class="php">// $debug = true; if ($debug) { echo "query: $query\n"; }</code>
Tanpa REGISTER_GLOBALS didayakan, mengakses $query yang tidak diisytiharkan pembolehubah akan mengakibatkan amaran atau ralat, mendorong pembangun untuk mentakrifkan pembolehubah secara eksplisit. Walau bagaimanapun, dengan REGISTER_GLOBALS dihidupkan, $query yang tidak diisytiharkan akan tetap tersedia sebagai pembolehubah global, mewujudkan peluang yang berpotensi untuk penyerang mengeksploitasi parameter yang tidak diisytiharkan ini.
Walaupun tidak begitu buruk, REGISTER_GLOBALS boleh memburukkan lagi kelemahan keselamatan yang berleluasa dalam banyak skrip PHP kerana kualitinya yang sering kurang. Oleh itu, biasanya disyorkan untuk melumpuhkan REGISTER_GLOBALS untuk keselamatan yang dipertingkatkan.
Atas ialah kandungan terperinci Mengapa REGISTER_GLOBALS bahaya keselamatan dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!