Kerentanan pada peringkat aplikasi yang mungkin membenarkan penyerang cuba melakukan beberapa jenis serangan yang berniat jahat seperti serangan traversal laluan, suntikan kod, penafian perkhidmatan aplikasi, suntikan SQL dll. dipanggil suntikan objek PHP atau Penyahserian PHP dan punca kelemahan ini adalah input yang tidak dibersihkan dengan betul yang dibekalkan oleh pengguna kepada fungsi unserialize() dalam PHP dan penyerang boleh menyuntik objek PHP sewenang-wenangnya ke dalam aplikasi dengan menghantar rentetan yang ad hoc bersiri melalui unserialize yang terdedah ( ) dan kelemahan dalam PHP ini membawa kepada pelaksanaan kod jauh.
Mulakan Kursus Pembangunan Perisian Percuma Anda
Pembangunan web, bahasa pengaturcaraan, ujian perisian & lain-lain
Sintaks
Sintaks untuk mengisytiharkan fungsi serialize() dalam PHP adalah seperti berikut:
unserialize(value);
di mana nilai ialah nilai yang tidak bersiri yang mungkin boleh membawa kepada suntikan objek.
Kerja suntikan objek dalam PHP adalah seperti berikut:
Berikut adalah contoh yang diberikan di bawah:
Atur cara PHP untuk menggambarkan suntikan objek untuk menukar nilai yang diberikan sebagai jujukan bit supaya ia boleh disimpan di mana-mana dan kemudian menyahsirinya menggunakan fungsi unserialize():
Kod:
<html> <body> <?php #The array of data to be serialized is passed to the serialize function and the returned string is stored in a variable called value $value = serialize(array("Welcome", "to", "PHP")); #The returned string from the serialize() function is displayed as the output on the screen echo "The data after serialization using serialize() function is as follows:\n"; echo $value; #the serialized data is passed through the unserialize function and the result is stroed in a variable called result $result = unserialize($value); echo "<br>"; #The unserialized data is displayed as the output on the screen echo "The data after deserialization using unserialize() function is as follows:\n"; echo "<br>"; var_dump($result); ?> </body> </html>
Output:
Dalam atur cara di atas, tatasusunan data yang akan disiri dihantar ke fungsi siri dan rentetan yang dikembalikan disimpan dalam pembolehubah yang dipanggil nilai. Kemudian rentetan yang dikembalikan daripada fungsi serialize() dipaparkan sebagai output pada skrin. Kemudian data bersiri disalurkan melalui fungsi unserialize dan hasilnya disimpan dalam pembolehubah yang dipanggil hasil. Kemudian data yang tidak bersiri dipaparkan sebagai output pada skrin. Output ditunjukkan dalam syot kilat di atas.
Atur cara PHP untuk menggambarkan suntikan objek untuk menukar nilai yang diberikan sebagai jujukan bit supaya ia boleh disimpan di mana-mana dan kemudian menyahsirinya menggunakan fungsi unserialize():
Kod:
<html> <body> <?php #The array of data to be serialized is passed to the serialize function and the returned string is stored in a variable called value $value = serialize(array("Learning", "is", "fun")); #The returned string from the serialize() function is displayed as the output on the screen echo "The data after serialization using serialize() function is as follows:\n"; echo $value; #the serialized data is passed through the unserialize function and the result is stroed in a variable called result $result = unserialize($value); echo "<br>"; #The unserialized data is displayed as the output on the screen echo "The data after deserialization using unserialize() function is as follows:\n"; echo "<br>"; var_dump($result); ?> </body> </html>
Output:
Dalam atur cara di atas, tatasusunan data yang akan disiri dihantar ke fungsi siri dan rentetan yang dikembalikan disimpan dalam pembolehubah yang dipanggil nilai. Kemudian rentetan yang dikembalikan daripada fungsi serialize() dipaparkan sebagai output pada skrin. Kemudian data bersiri disalurkan melalui fungsi unserialize dan hasilnya disimpan dalam pembolehubah yang dipanggil hasil. Kemudian data yang tidak bersiri dipaparkan sebagai output pada skrin. Output ditunjukkan dalam syot kilat di atas.
Atur cara PHP untuk menggambarkan suntikan objek untuk menukar nilai yang diberikan sebagai jujukan bit supaya ia boleh disimpan di mana-mana dan kemudian menyahsirinya menggunakan fungsi unserialize():
Kod:
<html> <body> <?php #The array of data to be serialized is passed to the serialize function and the returned string is stored in a variable called value $value = serialize(array("We", "love", "India")); #The returned string from the serialize() function is displayed as the output on the screen echo "The data after serialization using serialize() function is as follows:\n"; echo $value; #the serialized data is passed through the unserialize function and the result is stroed in a variable called result $result = unserialize($value); echo "<br>"; #The unserialized data is displayed as the output on the screen echo "The data after deserialization using unserialize() function is as follows:\n"; echo "<br>"; var_dump($result); ?> </body> </html>
Output:
Dalam atur cara di atas, tatasusunan data yang akan disiri dihantar ke fungsi siri dan rentetan yang dikembalikan disimpan dalam pembolehubah yang dipanggil nilai. Kemudian rentetan yang dikembalikan daripada fungsi serialize() dipaparkan sebagai output pada skrin. Kemudian data bersiri disalurkan melalui fungsi unserialize dan hasilnya disimpan dalam pembolehubah yang dipanggil hasil. Kemudian data yang tidak bersiri dipaparkan sebagai output pada skrin. Output ditunjukkan dalam syot kilat di atas.
Atas ialah kandungan terperinci Suntikan Objek PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!