Apabila Internet semakin digunakan secara meluas, isu keselamatan menjadi semakin ketara. Dalam pembangunan PHP, suntikan SQL dan serangan XSS adalah dua isu keselamatan yang paling biasa. Artikel ini menerangkan cara untuk mengelakkan kedua-dua serangan.
1. Apakah suntikan SQL?
Suntikan SQL bermakna penyerang mengeksploitasi kelemahan aplikasi web dan memasukkan arahan SQL untuk menyebabkan pelayan pangkalan data berjalan dengan cara yang melebihi niat reka bentuk asal. Penyerang boleh menggunakan kelemahan ini untuk melakukan operasi berniat jahat, seperti membaca dan menulis data, mendapatkan keistimewaan pentadbir, dsb.
2. Bagaimana untuk mengelakkan suntikan SQL?
1. Gunakan PDO dan kaedah pernyataan yang disediakan
Dalam pembangunan PHP, menggunakan kelas PDO untuk mengakses pangkalan data boleh mengelakkan masalah suntikan SQL dengan berkesan. PDO menyediakan kaedah untuk menyediakan pernyataan, yang boleh memproses parameter terikat sebelum melaksanakan pernyataan SQL untuk mengelakkan serangan suntikan SQL.
Sebagai contoh, gunakan PDO untuk menyambung ke pangkalan data MySQL:
$pdo = new PDO('mysql:host=localhost;dbname=test', 'user', 'pass') ;
Gunakan pernyataan yang disediakan untuk memproses parameter:
$sql = "SELECT * FROM users WHERE username = :username AND password = :password";
$stmt = $pdo-> ;sediakan ($sql);
$stmt->bindParam(':username', $username);
$stmt->bindParam(':password', $password);
$stmt -> ;execute();
Dalam contoh di atas, objek PDO mula-mula menyambung ke pangkalan data menggunakan dsn, nama pengguna dan kata laluan, dan kemudian menggunakan pernyataan yang disediakan dan kaedah bindParam untuk memproses parameter dalam pernyataan SQL . Dengan cara ini, walaupun pengguna memasukkan pernyataan SQL yang berniat jahat, ia tidak akan dilaksanakan kerana PDO akan memproses parameter yang dimasukkan oleh pengguna dan bukannya menyambungkannya ke dalam pernyataan SQL.
2. Gunakan kaedah input penapis
PHP menyediakan pelbagai kaedah untuk menapis data input, seperti filter_input, filter_var, dll. Kaedah ini boleh menapis, mengesahkan dan mengubah data input untuk memastikan keselamatan data.
Contohnya:
$username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING);
$password = filter_input(INPUT_POST, 'password', FILTER_SANITIZE_STRING);>Dalam contoh di atas, kami menapis data dalam permintaan POST melalui kaedah filter_input untuk memastikan nama pengguna dan kata laluan yang dimasukkan adalah kedua-dua jenis rentetan, sekali gus mengelakkan serangan suntikan SQL.
3. Apakah serangan XSS?
Serangan XSS (Cross Site Scripting) merujuk kepada penyerang yang mengambil kesempatan daripada kelemahan dalam aplikasi web untuk menyuntik skrip hasad ke dalam halaman web Apabila pengguna lain melawat halaman yang sama, skrip hasad ini akan Dilaksanakan dalam penyemak imbas pengguna mencapai serangan.
4. Bagaimana untuk mengelakkan serangan XSS?
1. Tapis input pengguna
Dalam pembangunan PHP, penapisan yang betul dan melarikan input pengguna dengan berkesan boleh mengelakkan serangan XSS. Anda boleh menggunakan fungsi htmlspecialchars untuk melepaskan input pengguna untuk memastikan bahawa aksara yang dimasukkan tidak ditafsirkan sebagai teg HTML atau skrip JavaScript.
Contohnya:
$name = htmlspecialchars($_POST['name'], ENT_QUOTES, 'UTF-8');
Dalam contoh di atas, htmlspecialchars ialah digunakan Fungsi ini melepaskan semua teg HTML dan simbol khas dalam $_POST['nama'] untuk mengelakkan ditafsirkan sebagai teg HTML atau skrip JavaScript oleh penyemak imbas.
2. Gunakan Kuki HTTPOnly
Tetapkan atribut HttpOnly kuki kepada benar untuk membuat kuki tidak dapat diperoleh melalui JavaScript, sekali gus mengelakkan serangan XSS. Dengan cara ini, walaupun penyerang berjaya menyuntik skrip berniat jahat, dia tidak boleh membaca maklumat kuki pengguna yang melawat.
Contohnya:
ini_set('session.cookie_httponly', 1);
Dalam contoh di atas, gunakan kaedah ini_set untuk menetapkan parameter cookie_httponly di bawah sesi kepada 1, iaitu, Cookie Sifat HttpOnly ditetapkan kepada benar.
Ringkasan
Dalam pembangunan PHP, suntikan SQL dan serangan XSS ialah isu keselamatan biasa. Kedua-dua kaedah serangan ini boleh dielakkan dengan berkesan dengan menggunakan kelas PDO dan pernyataan yang disediakan, menapis input pengguna dan menggunakan Kuki HTTPOnly. Apabila pembangun menulis aplikasi PHP, mereka harus memberi perhatian kepada penapisan data dan melarikan diri, dan pada masa yang sama memastikan keselamatan dan kebolehpercayaan program untuk memastikan keselamatan data pengguna.
Atas ialah kandungan terperinci Bagaimana untuk mengelakkan suntikan SQL dan serangan XSS dalam pembangunan bahasa PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!