Rumah > Artikel > pembangunan bahagian belakang > Mengapa Register_Globals Berbahaya dalam PHP?
Memahami Register_Globals dan Kata Kunci Global dalam PHP
Apabila bekerja dengan aplikasi web, adalah penting untuk memahami konsep register_globals dan kata kunci global dalam PHP.
Apakah Register_Globals?
Arahan register_globals secara automatik mendaftarkan elemen tatasusunan $_REQUEST sebagai pembolehubah. Ini bermakna bahawa sebarang data yang diserahkan melalui borang (sama ada melalui POST atau GET) boleh diakses serta-merta sebagai pembolehubah PHP yang mengandungi nama medan input yang sepadan.
Walaupun fungsi ini kelihatan mudah pada mulanya, ia mendedahkan aplikasi kepada kelemahan keselamatan. Penyerang boleh memanipulasi rentetan pertanyaan URL atau data borang yang diserahkan untuk menetapkan pembolehubah sewenang-wenang dan berpotensi mendapat akses tanpa kebenaran. Oleh itu, adalah dinasihatkan untuk melumpuhkan register_globals atas sebab keselamatan.
Contoh:
Pertimbangkan senario di mana borang log masuk membenarkan pengguna menyerahkan nama pengguna dan kata laluan mereka. Dengan register_globals didayakan, penyerang boleh menambahkan yang berikut pada URL:
?username=admin&password=secret
Ini akan menetapkan pembolehubah $username dan $password secara automatik dalam skrip PHP, membenarkan penyerang memintas proses pengesahan.
Apakah Kata Kunci Global?
Kata kunci global mempunyai tujuan yang berbeza dan tidak berkaitan dengan register_globals. Ia membenarkan pembolehubah yang ditakrifkan di luar fungsi untuk diakses atau diubah suai dalam fungsi tersebut.
Contoh:
$foo = 'bar'; function baz() { echo $foo; // PHP generates a warning as $foo is undefined within this scope } function buzz() { global $foo; // Enables access to the global variable $foo echo $foo; // Prints 'bar' to the screen }
Atas ialah kandungan terperinci Mengapa Register_Globals Berbahaya dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!