Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Strategi keselamatan bentuk PHP: Gunakan penapis untuk menyemak parameter input

Strategi keselamatan bentuk PHP: Gunakan penapis untuk menyemak parameter input

王林
王林asal
2023-06-24 08:30:221234semak imbas

Dalam aplikasi web moden, borang ialah salah satu cara paling biasa untuk bertukar-tukar data antara pengguna dan pelayan. Walau bagaimanapun, ramai pembangun web tidak memahami isu keselamatan data input dan terdedah kepada pelbagai serangan keselamatan, seperti suntikan SQL, serangan skrip merentas tapak (XSS), dll., yang boleh menyebabkan kebocoran data, ranap aplikasi dan lain-lain. masalah. Oleh itu, apabila membangunkan aplikasi web, adalah amat penting untuk mengukuhkan keselamatan borang.

PHP ialah salah satu bahasa pembangunan web yang popular Ia menyediakan banyak penapis terbina dalam untuk mengesahkan dan menapis data input pengguna. Penapis ini adalah salah satu amalan terbaik untuk memproses data borang dalam PHP. Dalam artikel ini, kita akan membincangkan strategi keselamatan bentuk PHP, memfokuskan pada cara menggunakan penapis untuk menyemak parameter input untuk mengurangkan permukaan serangan.

  1. Apakah penapis?

Penapis ialah mekanisme untuk menyemak dan memproses data input sebelum ia memasuki aplikasi. Terdapat pelbagai penapis terbina dalam dalam PHP yang membolehkan anda mengesahkan dan menapis input HTML yang dimasukkan pengguna, parameter URL, pernyataan pertanyaan pangkalan data, dsb. Dengan menggunakan penapis ini, anda boleh meminimumkan kerentanan aplikasi anda kepada serangan.

  1. Klasifikasi penapis PHP

Dalam PHP, penapis boleh dibahagikan kepada empat kategori: pengesahan, pembersihan, penulenan dan penukaran. Di bawah ini kami menyediakan pengenalan ringkas kepada setiap kategori.

Pengesahan: Penapis kelas pengesahan hanya menerima input data yang dijangkakan. Jika input tidak sah, mesej ralat dikembalikan. Penapis pengesahan biasa dalam PHP termasuk FILTER_VALIDATE_EMAIL, FILTER_VALIDATE_URL, dsb.

Pembersihan: Pembersihan penapis kelas boleh menghapuskan aksara yang tidak sah atau tidak diperlukan dalam input. Penapis bersih boleh digunakan apabila anda perlu mengabaikan aksara dan simbol tertentu daripada data input. Penapis sanitasi biasa dalam PHP termasuk FILTER_SANITIZE_STRING, FILTER_SANITIZE_NUMBER_INT, dsb.

Pemurnian: Penapis penulenan paling biasa digunakan untuk menghapuskan kandungan tidak selamat dalam data input. Penapis ini mengalih keluar kandungan yang berpotensi mengancam (cth. Javascript, HTML, SQL, dll.) dan oleh itu boleh menjejaskan data. Penapis sanitasi biasa dalam PHP termasuk FILTER_SANITIZE_STRING, dsb.

Penukaran: Penapis kelas penukaran boleh menukar data daripada satu format kepada format yang lain. Contohnya, tukar tarikh kepada format yyyy-mm-dd. Penapis penukaran biasa dalam PHP termasuk FILTER_SANITIZE_ENCODED, FILTER_SANITIZE_MAGIC_QUOTES, dsb.

  1. Cara menggunakan penapis

Menggunakan penapis dalam PHP adalah sangat mudah, anda hanya perlu mengikuti langkah berikut:

1) Buat tatasusunan bersekutu , mengandungi kunci data dan nilai untuk ditapis.

2) Tentukan penapis yang sesuai untuk membolehkan pengesahan, pembersihan, penulenan atau transformasi data.

3) Gunakan penapis yang ditentukan untuk menapis data input.

4) Tentukan sama ada data yang ditapis kosong atau tidak sah untuk menentukan sama ada ia telah lulus semakan penapis.

Berikut ialah contoh kod untuk menggunakan penapis untuk mengesahkan dan memurnikan data borang:

$filters = array(
     'name' => FILTER_SANITIZE_STRING,
     'email' => FILTER_VALIDATE_EMAIL,
     'phone' => FILTER_SANITIZE_NUMBER_INT
);

//过滤输入的数据
$input = filter_input_array(INPUT_POST, $filters);

//判断输入是否合法
if (!empty($input)) {
     //将过滤后的数据存入数据库
     $name = mysqli_real_escape_string($mysqli, $input['name']);
     $email = mysqli_real_escape_string($mysqli, $input['email']);
     $phone = mysqli_real_escape_string($mysqli, $input['phone']);

     //执行数据库查询
     $result = mysqli_query($mysqli, "INSERT INTO users (name, email, phone) VALUES ('$name', '$email', '$phone')");

     //输出处理结果
     if ($result) {
          echo '数据已存储';
     } else {
          echo '存储数据失败';
     }
} else {
     echo '输入数据有误';
}

Dalam kod di atas, kami menggunakan tiga penapis: FILTER_SANITIZE_STRING, FILTER_VALIDATE_EMAIL dan FILTER_SANITIZE_NUMBER_INT untuk menapis data dan Gunakan fungsi mysqli_real_escape_string untuk melepaskan aksara khas dalam pertanyaan SQL untuk mengelakkan serangan suntikan SQL.

  1. Cara mencegah serangan

Menggunakan penapis boleh meningkatkan keselamatan aplikasi anda, tetapi anda masih perlu memberi perhatian kepada perkara berikut untuk menangani kemungkinan serangan:

1) Kod pengesahan boleh digunakan untuk menentukan identiti pengguna dan menghalang penyerang berniat jahat daripada menggunakan program automatik untuk menyerang tapak web anda.

2) Jangan paparkan mesej ralat terperinci di tapak web anda kerana ini akan memberikan penyerang maklumat tentang aplikasi web anda, membolehkan penyerang mengetahui tentang kelemahan aplikasi anda dan mengeksploitasinya dengan cepat.

3) Apabila menerima data daripada sumber yang tidak disahkan, sentiasa tertakluk pada pengesahan dan pembersihan yang rapi.

4) Apabila memproses data input pengguna, gunakan penapis apabila boleh untuk mengesahkan, membersihkan, memurnikan atau mengubah data.

5) Gunakan versi terkini PHP dan pemalam yang berkaitan untuk memastikan kelemahannya telah diperbaiki.

6) Laksanakan protokol keselamatan yang baik dalam semua pelayan, termasuk SSL dan HTTPS, sandarkan data dengan kerap dan lakukan pengimbasan kerentanan dan ujian keselamatan aplikasi.

Ringkasnya, menggunakan penapis ialah cara yang mudah dan berkesan untuk melindungi aplikasi web anda daripada banyak ancaman keselamatan. Dengan mengikuti amalan terbaik untuk melaksanakan dasar keselamatan dalam kod anda dan memerhatikan keselamatan aplikasi anda, anda boleh meminimumkan pendedahan aplikasi anda kepada serangan.

Atas ialah kandungan terperinci Strategi keselamatan bentuk PHP: Gunakan penapis untuk menyemak parameter input. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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