Memahami Register_Globals dalam PHP
Arahan register_globals PHP menimbulkan persoalan tentang sifat dan fungsinya. Mari kita mendalaminya:
Apakah Register_Globals?
Register_globals ialah tetapan konfigurasi yang mencipta pembolehubah global secara automatik daripada elemen dalam tatasusunan $_REQUEST. Apabila menyerahkan borang, pembolehubah boleh diakses dalam skrip PHP dengan nama yang sepadan dengan atribut "nama" medan input.
Sebagai contoh, dengan register_globals didayakan dan borang menyerahkan medan nama pengguna, ungkapan ($username = == $_POST['nama pengguna']) akan dinilai kepada benar.
Keselamatan Implikasi
Register_globals menimbulkan risiko keselamatan yang ketara kerana ia membenarkan pengguna berniat jahat untuk memanipulasi pembolehubah tanpa pengesahan yang betul. Contohnya, dengan menambahkan "?authorized=1" pada URL, penyerang boleh memintas semakan kebenaran.
Perbezaan Kata Kunci Global
Tidak seperti register_globals, kata kunci global membenarkan pembolehubah yang diisytiharkan di luar skop fungsi untuk diakses di dalamnya. Pembolehubah global mesti diisytiharkan secara eksplisit menggunakan kata kunci global sebelum ia boleh digunakan.
Sebagai contoh, kod berikut menggunakan global $foo untuk mengakses pembolehubah yang diisytiharkan di luar fungsi buzz():
$foo = 'bar'; baz(); function baz() { echo $foo; // PHP warns about using an uninitialized variable } buzz(); function buzz() { global $foo; // Enables use of $foo in this scope echo $foo; // Prints 'bar' to screen }
Atas ialah kandungan terperinci Adakah Arahan register_globals PHP merupakan Risiko Keselamatan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!