Suntikan Objek PHP

王林
Lepaskan: 2024-08-29 12:36:32
asal
411 orang telah melayarinya

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);
Salin selepas log masuk

di mana nilai ialah nilai yang tidak bersiri yang mungkin boleh membawa kepada suntikan objek.

Kerja Suntikan Objek dalam PHP

Kerja suntikan objek dalam PHP adalah seperti berikut:

  • Kerentanan pada tahap 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 penyahserikatan PHP.
  • Punca kelemahan ini ialah input yang tidak dibersihkan dengan betul yang dibekalkan oleh pengguna kepada fungsi unserialize() dalam PHP.
  • Penyerang boleh menyuntik objek PHP sewenang-wenangnya ke dalam aplikasi dengan menghantar rentetan yang bersiri ad hoc melalui fungsi unserialize() yang terdedah.
  • Kerentanan dalam PHP ini membawa kepada pelaksanaan kod jauh.

Contoh Suntikan Objek PHP

Berikut adalah contoh yang diberikan di bawah:

Contoh #1

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>
Salin selepas log masuk

Output:

Suntikan Objek PHP

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.

Contoh #2

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>
Salin selepas log masuk

Output:

Suntikan Objek PHP

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.

Contoh #3

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>
Salin selepas log masuk

Output:

Suntikan Objek PHP

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!

Label berkaitan:
php
sumber:php
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan