Menyingkap Rahsia Register_globals dalam PHP
Register_globals, ciri penting dalam PHP, telah mendapat perhatian kerana potensi kesannya terhadap keselamatan. Untuk memahami konsep ini secara menyeluruh, mari kita mendalami intipatinya dan terokai contoh yang bernas.
Apakah register_globals?
Register_globals ialah tetapan konfigurasi yang membolehkan PHP mencipta global secara automatik pembolehubah daripada elemen tatasusunan $_REQUEST. Ini menunjukkan bahawa nilai yang diserahkan melalui permintaan POST atau GET boleh diakses sebagai pembolehubah dengan nama yang sepadan dengan nama medan input masing-masing.
Adalah global $user_id; dianggap daftar globals?
Kata kunci global beroperasi secara berbeza daripada register_globals. Ia membenarkan penggunaan pembolehubah global tertentu dalam skop tempatan sesuatu fungsi. Tidak seperti register_globals, ia tidak menjadikan semua elemen $_REQUEST global secara automatik.
Contoh dan Potensi Risiko Keselamatan
Contoh klasik implikasi keselamatan register_globals berkisar pada pengesahan input. Pertimbangkan kod berikut:
if (user_is_admin($user)) { $authorized = true; } if ($authorized) { // Grant extensive privileges }
Dalam persekitaran dengan register_globals didayakan, penyerang boleh memanipulasi URL dengan menambah ?authorized=1 untuk melaksanakan tindakan istimewa tanpa kebenaran.
Perbandingan dengan Kata Kunci global
Kata kunci global, sebaliknya, mempunyai tujuan yang berbeza. Ia membolehkan akses kepada pembolehubah global tertentu dalam skop fungsi. Contohnya:
$foo = 'bar'; function baz() { global $foo; echo $foo; // Output: bar }
Dalam contoh ini, $foo global; pengisytiharan dalam fungsi baz() memberikan akses kepada pembolehubah $foo yang ditakrifkan dalam skop global.
Atas ialah kandungan terperinci Apakah register_globals dan bagaimana ia memberi kesan kepada keselamatan PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!