Rumah >pembangunan bahagian belakang >tutorial php >Penapisan data PHP: daripada input pengguna kepada keselamatan pangkalan data

Penapisan data PHP: daripada input pengguna kepada keselamatan pangkalan data

王林
王林asal
2023-07-28 22:29:151419semak imbas

Penapisan Data PHP: Daripada Input Pengguna kepada Keselamatan Pangkalan Data

Ikhtisar:
Dalam pembangunan web, keselamatan data input pengguna merupakan isu yang sangat penting. Penapisan dan pengesahan input yang tidak betul boleh mendedahkan pangkalan data kepada serangan seperti suntikan SQL, skrip rentas tapak (XSS), dsb. Artikel ini akan memperkenalkan cara menggunakan PHP untuk penapisan dan pengesahan data untuk memastikan keselamatan data daripada input pengguna kepada storan dalam pangkalan data.

  1. Penapisan input
    Data yang dimasukkan oleh pengguna tidak boleh dipercayai, jadi ia mesti ditapis dengan sewajarnya. Berikut ialah beberapa teknik penapisan input biasa.

(1) HTML Escape
Data yang dimasukkan oleh pengguna mungkin mengandungi tag HTML Untuk mengelakkan serangan XSS, data tersebut hendaklah HTML dilepaskan. PHP menyediakan fungsi htmlspecialchars() untuk melaksanakan fungsi ini.
Contoh kod:

$input = $_POST['input'];
$filteredInput = htmlspecialchars($input);

(2) Alih keluar lebihan ruang
Sebelum memproses input pengguna, anda harus menggunakan fungsi trim() untuk membuang lebihan ruang daripada data input.
Contoh kod:

$input = $_POST['input'];
$filteredInput = trim($input);

(3) Tapis aksara khas
Untuk mengelakkan aksara khas yang terkandung dalam input pengguna daripada menyebabkan masalah pelaksanaan kod, anda boleh menggunakan fungsi filter_var() PHP digabungkan dengan penapis FILTER_SANITIZE_STRING untuk menapis input.
Contoh kod:

$input = $_POST['input'];
$filteredInput = filter_var($input, FILTER_SANITIZE_STRING);
  1. Sahkan data
    Selain menapis input pengguna, anda juga perlu mengesahkan kesahihan data input. Berikut adalah beberapa teknik pengesahan data yang biasa digunakan.

(1) Sahkan e-mel
Anda boleh menggunakan fungsi filter_var() digabungkan dengan penapis FILTER_VALIDATE_EMAIL untuk mengesahkan kesahihan alamat e-mel.
Contoh kod:

$email = $_POST['email'];
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
    // 邮箱地址合法
} else {
    // 邮箱地址非法
}

(2) Sahkan URL
Anda boleh menggunakan fungsi filter_var() digabungkan dengan penapis FILTER_VALIDATE_URL untuk mengesahkan kesahihan URL.
Contoh kod:

$url = $_POST['url'];
if (filter_var($url, FILTER_VALIDATE_URL)) {
    // URL合法
} else {
    // URL非法
}

(3) Sahkan nombor
Anda boleh menggunakan fungsi is_numeric() untuk mengesahkan sama ada input ialah nombor.
Contoh Kod:

$number = $_POST['number'];
if (is_numeric($number)) {
    // 输入为数字
} else {
    // 输入非数字
}
  1. Keselamatan Pangkalan Data
    Sebelum menyimpan data input pengguna ke dalam pangkalan data, data tersebut perlu diproses lebih lanjut untuk memastikan keselamatan pangkalan data.

(1) Gunakan pernyataan yang disediakan
Kenyataan yang disediakan ialah cara untuk menghantar parameter melalui ruang letak, yang boleh menghalang serangan suntikan SQL dengan berkesan. Menggunakan PDO atau pustaka sambungan mysqli, anda boleh menggunakan pernyataan yang disediakan dengan mudah untuk melaksanakan operasi pangkalan data.
Contoh kod (menggunakan PDO):

$db = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');
$stmt = $db->prepare("INSERT INTO users (name, email) VALUES (?, ?)");
$stmt->bindParam(1, $name);
$stmt->bindParam(2, $email);
$name = $_POST['name'];
$email = $_POST['email'];
$stmt->execute();

(2) Menggunakan pencincangan kata laluan
Apabila menyimpan kata laluan pengguna, ia tidak seharusnya disimpan dalam teks yang jelas, tetapi disimpan menggunakan cincang kata laluan. PHP menyediakan fungsi password_hash() untuk melaksanakan pencincangan kata laluan.
Contoh Kod:

$password = $_POST['password'];
$hashedPassword = password_hash($password, PASSWORD_DEFAULT);

Ringkasan:
Dalam pembangunan web, keselamatan data adalah penting. Melalui penapisan dan pengesahan input pengguna, serta pengendalian keselamatan pangkalan data yang betul, keselamatan aplikasi web boleh dipertingkatkan dan potensi ancaman keselamatan boleh dicegah dengan berkesan. Dalam pembangunan sebenar, kita harus memilih kaedah yang sesuai untuk penapisan dan pengesahan data berdasarkan keperluan khusus untuk melindungi keselamatan data pengguna.

Atas ialah kandungan terperinci Penapisan data PHP: daripada input pengguna kepada keselamatan pangkalan data. 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