Apabila saya menggunakan PHP untuk membangunkan tapak web baru-baru ini, saya menghadapi masalah: apabila data yang dimasukkan oleh pengguna disimpan dalam tatasusunan, didapati bahawa aksara khas dalam data tidak terlepas, yang boleh membawa dengan mudah kepada kelemahan keselamatan.
Untuk menyelesaikan masalah ini, kita perlu memahami mekanisme pelarian automatik PHP.
Mekanisme melarikan diri automatik dalam php dilaksanakan melalui pilihan magic_quotes_gpc. Apabila pilihan ini dihidupkan, PHP secara automatik akan melepaskan beberapa aksara khas, seperti petikan tunggal, petikan berganda, garis miring ke belakang, dsb., dalam input pengguna dan data yang diperoleh daripada pangkalan data. Tujuannya adalah untuk mengelakkan isu keselamatan seperti suntikan SQL, tetapi ia juga akan menyebabkan beberapa pelarian yang salah Contohnya, apabila menyimpan kandungan teks kaya, teg HTML dan gaya CSS juga akan terlepas, mengakibatkan paparan tidak normal.
Untuk menyelesaikan masalah ini, kami boleh melarikan diri daripada data yang dimasukkan oleh pengguna sendiri dengan mematikan pilihan magic_quotes_gpc Ini boleh mengelakkan kandungan yang tidak diperlukan dan melindungi keselamatan data.
Berikut ialah contoh kod ringkas yang menunjukkan cara melepaskan diri dan menyimpannya secara manual dalam tatasusunan:
//关闭magic_quotes_gpc选项 ini_set('magic_quotes_gpc', 'off'); //接收用户输入的数据 $username = addslashes($_POST['username']); $password = addslashes($_POST['password']); //存入数组 $user = array( 'username' => $username, 'password' => $password );
Dalam kod di atas, mula-mula gunakan fungsi ini_set untuk mematikan magic_quotes_gpc pilihan, dan kemudian gunakan fungsi addslashes untuk Data yang dimasukkan oleh pengguna dilepaskan, dan akhirnya data yang dilepaskan disimpan dalam tatasusunan.
Selain itu, kami juga boleh menggunakan fungsi htmlspecialchars untuk melepaskan tag html bagi memastikan kandungan teks kaya boleh dipaparkan dengan betul. Kod khusus adalah seperti berikut:
//关闭magic_quotes_gpc选项 ini_set('magic_quotes_gpc', 'off'); //接收用户输入的数据 $content = $_POST['content']; //转义html标签 $content = htmlspecialchars($content, ENT_QUOTES); //存入数组 $data = array( 'content' => $content );
Untuk meringkaskan, mekanisme pelarian automatik dalam PHP boleh dikawal dengan mengubah suai pilihan magic_quotes_gpc Selain itu, data juga boleh dilepaskan secara manual untuk memastikan keselamatan data. Dalam pembangunan sebenar, kita harus memilih kaedah melarikan diri yang sesuai berdasarkan senario aplikasi tertentu untuk mengelakkan kelemahan keselamatan dan memaparkan keabnormalan.
Atas ialah kandungan terperinci Fahami pelarian automatik tatasusunan yang disimpan dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!