Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa Register_Globals Berbahaya dalam PHP?

Mengapa Register_Globals Berbahaya dalam PHP?

Barbara Streisand
Barbara Streisandasal
2024-11-17 19:27:02861semak imbas

Why is Register_Globals Dangerous in 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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn