Amalan Terbaik Keselamatan untuk Pembangunan PHP dan Vue.js: Mencegah Suntikan Pangkalan Data
Keselamatan ialah aspek yang mesti diambil serius semasa sebarang proses pembangunan aplikasi. Suntikan pangkalan data adalah salah satu kelemahan keselamatan biasa Dengan menyuntik input pengguna secara berniat jahat, penggodam boleh mendapatkan atau mengusik data dalam pangkalan data. Dalam pembangunan PHP dan Vue.js, terdapat beberapa amalan terbaik yang boleh kami pakai untuk mencegah suntikan pangkalan data. Artikel ini akan memperkenalkan beberapa teknik untuk menghalang suntikan pangkalan data dan memberikan contoh kod yang sepadan.
$username = $_POST['username']; $password = $_POST['password']; $sql = "SELECT * FROM users WHERE username = :username AND password = :password"; $stmt = $pdo->prepare($sql); $stmt->bindParam(':username', $username); $stmt->bindParam(':password', $password); $stmt->execute(); $user = $stmt->fetch(PDO::FETCH_ASSOC);
Dalam kod di atas, kami telah menggunakan ruang letak bernama (:nama pengguna dan :kata laluan) sebagai ganti input pengguna sebenar. Kaedah bindParam PDO mengikat input pengguna kepada pemegang tempat, memastikan bahawa input tidak ditafsirkan sebagai sebahagian daripada pernyataan SQL.
<template> <div> <input v-model="username" type="text" placeholder="Username"> <input v-model="password" type="password" placeholder="Password"> <button @click="login">Login</button> </div> </template> <script> export default { data() { return { username: '', password: '' }; }, methods: { login() { // 进一步验证用户输入,防止注入攻击 if (/^[a-zA-Z0-9]+$/.test(this.username) && /^[a-zA-Z0-9]+$/.test(this.password)) { // 验证通过,发送登录请求 // ... } } } }; </script>
Dalam kod di atas, kami telah menggunakan ungkapan biasa ^[a-zA-Z0-9]+$ untuk mengehadkan nama pengguna dan kata laluan untuk hanya mengandungi huruf dan nombor. Melakukan ini menghalang input pengguna daripada mengandungi aksara khas atau pernyataan SQL.
$username = mysqli_real_escape_string($conn, $_POST['username']); $password = mysqli_real_escape_string($conn, $_POST['password']); $sql = "SELECT * FROM users WHERE username = '$username' AND password = '$password'"; $result = mysqli_query($conn, $sql); $user = mysqli_fetch_assoc($result);
Dalam kod di atas, kami menggunakan mysqli_real_escape_string untuk melepaskan nama pengguna dan kata laluan untuk memastikan bahawa input tidak memecahkan struktur pernyataan SQL.
Ringkasnya, dengan mengamalkan beberapa amalan pengekodan selamat, kami boleh menghalang serangan suntikan pangkalan data dengan berkesan. Pertanyaan berparameter, pengesahan dan penapisan input, serta membersihkan dan melepaskan input pengguna adalah semua langkah pertahanan yang sangat penting. Dalam pembangunan PHP dan Vue.js, pembangun hendaklah sentiasa mengutamakan keselamatan dan memilih langkah pertahanan yang sesuai untuk melindungi pangkalan data dalam aplikasi berdasarkan situasi tertentu.
Atas ialah kandungan terperinci Amalan Terbaik Keselamatan untuk PHP dan Pembangunan Vue.js: Mencegah Suntikan Pangkalan Data. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!