Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Amalan Terbaik Keselamatan untuk PHP dan Pembangunan Vue.js: Mencegah Suntikan Pangkalan Data

Amalan Terbaik Keselamatan untuk PHP dan Pembangunan Vue.js: Mencegah Suntikan Pangkalan Data

WBOY
WBOYasal
2023-07-06 11:15:061611semak imbas

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.

  1. Gunakan pertanyaan berparameter
    Pertanyaan berparameter ialah cara biasa untuk mengelakkan suntikan pangkalan data. Ia berkesan menghalang input pengguna daripada digunakan sebagai sebahagian daripada pernyataan SQL. Dalam PHP, anda boleh menggunakan PDO (Objek Data PHP) atau sambungan MySQLi untuk melaksanakan pertanyaan berparameter. Berikut ialah contoh menggunakan PDO:
$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.

  1. Pengesahan dan penapisan input
    Selain menggunakan pertanyaan berparameter, mengesahkan dan menapis input pengguna juga merupakan langkah penting dalam mencegah suntikan pangkalan data. Dalam Vue.js, input pengguna boleh disahkan menggunakan ungkapan biasa atau peraturan pengesahan terbina dalam. Berikut ialah contoh pengesahan input menggunakan Vue.js:
<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.

  1. Membersihkan dan melepaskan input pengguna
    Satu lagi cara penting untuk mempertahankan diri daripada suntikan pangkalan data ialah membersihkan dan melepaskan input pengguna. Dalam PHP, input pengguna boleh dilepaskan dan ditapis menggunakan fungsi terbina dalam seperti mysqli_real_escape_string atau menggunakan penapis yang dipratentukan seperti filter_var. Berikut ialah contoh penggunaan mysqli_real_escape_string:
$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!

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