Dalam beberapa tahun kebelakangan ini, isu keselamatan rangkaian telah menarik perhatian yang semakin kerap. Antaranya, kelemahan suntikan kod adalah salah satu isu keselamatan biasa. PHP, sebagai bahasa pengaturcaraan back-end yang biasa digunakan, digunakan secara meluas dalam pembangunan laman web. Walau bagaimanapun, disebabkan fleksibiliti dan kemudahan penggunaannya, PHP akan mempunyai kelemahan keselamatan dalam proses menulis kod Jadi, bagaimana untuk mengelakkan kelemahan suntikan kod? Artikel ini akan memperkenalkan anda kepada kelemahan suntikan kod dalam Panduan Permulaan PHP.
1. Definisi kerentanan suntikan kod
Kerentanan suntikan kod, seperti namanya, merujuk kepada kerentanan keselamatan yang boleh diserang oleh penggodam dengan menyuntik kod ke dalam program. Kerentanan jenis ini biasanya wujud apabila parameter input tidak ditapis atau dilepaskan dengan betul, dan kandungan yang dimasukkan oleh pengguna dihantar terus ke program untuk pelaksanaan, sekali gus memberi kebenaran kepada penggodam untuk melaksanakan kod sewenang-wenangnya.
Sebagai contoh, seseorang memasukkan pernyataan berikut di tapak web:
PILIH * DARI ahli DI MANA nama pengguna = 'admin' DAN kata laluan = '123456'
Pernyataan ini ialah dalam Fungsi program ini adalah untuk menanyakan maklumat pengguna dengan nama pengguna "admin" dan kata laluan "123456". Walau bagaimanapun, jika penggodam memasukkan yang berikut dalam medan nama pengguna atau kata laluan:
' atau '1'='1
maka penyata itu akan ditukar kepada:
PILIH * DARI ahli WHERE nama pengguna = '' atau '1'='1' DAN kata laluan = '123456'
Pernyataan ini akan menanyakan semua nama pengguna, kerana '1'='1' sentiasa benar, Jadi penggodam boleh memintas sekatan input, melaksanakan kenyataan sewenang-wenangnya, dan juga memadamkan keseluruhan pangkalan data.
2. Kemudaratan kerentanan suntikan kod
Kerentanan suntikan kod sangat berbahaya dan boleh membawa kepada akibat yang serius seperti kebocoran data dan kelumpuhan sistem melalui suntikan kod, apabila kelemahan ini dieksploitasi, akibatnya akan menjadi bencana. Contohnya:
3. Kaedah untuk mengelakkan kelemahan suntikan kod
Untuk mengelakkan kelemahan suntikan kod, kita perlu memberi perhatian kepada perkara berikut semasa menulis kod PHP:
Sebagai contoh, kod berikut terdedah:
$username = $_POST['username'];
$password = $_POST['password'] ;
$sql = "SELECT * FROM user WHERE username='{$username}' AND password='{$password}'";
$result = mysql_query($sql);
Ubah suai kod seperti berikut, menggunakan pertanyaan berparameter untuk mengelakkan serangan suntikan:
$username = $_POST['username'];
$password = $_POST['password'];
$sql = " PILIH * DARI pengguna WHERE nama pengguna=? DAN kata laluan=?";
$stmt = $db->prepare($sql);
$stmt->bind_param("ss", $username, $ password );
$stmt->execute();
$result = $stmt->get_result();
Ringkasnya, kerentanan suntikan kod ialah salah satu kelemahan keselamatan biasa dalam aplikasi web. Semasa pembangunan aplikasi Web, kita harus mempertimbangkan sepenuhnya isu keselamatan ini dan mengambil langkah yang sesuai untuk memastikan keselamatan dan kestabilan program.
Atas ialah kandungan terperinci Bermula dengan PHP: Kerentanan Suntikan Kod. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!