Rumah >pembangunan bahagian belakang >tutorial php >Cara menggunakan PHP dan Vue.js untuk membangunkan aplikasi yang melindungi daripada serangan akses API berniat jahat

Cara menggunakan PHP dan Vue.js untuk membangunkan aplikasi yang melindungi daripada serangan akses API berniat jahat

WBOY
WBOYasal
2023-07-05 19:42:10665semak imbas

Cara menggunakan PHP dan Vue.js untuk membangunkan aplikasi yang mempertahankan daripada serangan akses API berniat jahat

Serangan akses API berniat jahat ialah ancaman keselamatan yang serius yang dihadapi oleh aplikasi Internet pada masa ini. Untuk melindungi aplikasi kami daripada serangan berniat jahat, kami perlu mengambil beberapa langkah berkesan untuk mempertahankan diri daripada serangan ini.

Artikel ini akan memperkenalkan cara menggunakan PHP dan Vue.js untuk membangunkan aplikasi yang boleh mempertahankan diri daripada serangan akses API berniat jahat. Kami akan menggunakan PHP sebagai bahasa bahagian belakang untuk mengendalikan permintaan API dan mengesahkan pengguna, dan Vue.js sebagai rangka kerja bahagian hadapan untuk membina antara muka pengguna dan mengendalikan interaksi pengguna.

1. Strategi Pertahanan

Sebelum memulakan pengekodan, kita harus terlebih dahulu menentukan beberapa strategi pertahanan yang berkesan untuk melindungi aplikasi kita. Berikut ialah beberapa strategi pertahanan biasa:

  1. Hadkan kekerapan akses API: Kami boleh mengurangkan kesan serangan berniat jahat dengan mengehadkan kekerapan akses API. Sebagai contoh, kita boleh menetapkan tetingkap masa di mana alamat IP yang sama hanya boleh mengakses API beberapa kali. Jika melebihi had nombor, kami boleh melarang akses kepada alamat IP buat sementara waktu.
  2. Gunakan Kunci API: Untuk memastikan hanya pengguna yang sah boleh mengakses API, kami boleh menggunakan Kunci API untuk pengesahan. Dalam setiap permintaan API, pengguna perlu menyediakan kunci API yang sah untuk capaian yang berjaya.
  3. Sahkan sumber permintaan: Kami harus mengesahkan sumber setiap permintaan API untuk memastikan hanya sumber yang sah boleh mengakses API. Ini boleh disahkan dengan menyemak Perujuk dalam pengepala permintaan atau melalui alamat IP.
  4. Penyulitan Data: Untuk mengelakkan data daripada diganggu semasa penghantaran, kami harus menyulitkan data sensitif. HTTPS boleh digunakan untuk memastikan penghantaran data yang selamat.

2. Pembangunan bahagian belakang

  1. Cipta kunci API

Pertama, kita perlu mencipta jadual dalam pangkalan data untuk menyimpan maklumat berkaitan kunci API. Sebagai contoh, kita boleh mencipta jadual bernama api_keys dengan medan berikut: id, user_id, api_key, created_at.

CREATE TABLE api_keys (
    id INT PRIMARY KEY AUTO_INCREMENT,
    user_id INT,
    api_key VARCHAR(255),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
  1. Jana Kunci API

Selepas pengguna berjaya mendaftar atau log masuk, kami boleh menjana kunci API unik untuk setiap pengguna. Kita boleh menggunakan fungsi uniqid PHP untuk menjana kunci API rawak dan memasukkannya ke dalam jadual api_keys.

$apiKey = uniqid();
$query = "INSERT INTO api_keys (user_id, api_key) VALUES (:user_id, :api_key)";
$stmt = $pdo->prepare($query);
$stmt->execute(['user_id' => $user_id, 'api_key' => $apiKey]);
  1. Pengesahan Antara Muka

Dalam setiap permintaan API, kami perlu mengesahkan identiti pengguna dan kesahihan kunci API. Kami boleh mengesahkan kewujudan kunci API dengan menghuraikan medan Kebenaran dalam pengepala permintaan dan menanyakan jadual api_keys.

$authorizationHeader = $_SERVER['HTTP_AUTHORIZATION'];
list(, $apiKey) = explode(' ', $authorizationHeader);
$query = "SELECT * FROM api_keys WHERE api_key = :api_key";
$stmt = $pdo->prepare($query);
$stmt->execute(['api_key' => $apiKey]);
$result = $stmt->fetch(PDO::FETCH_ASSOC);

if (!$result) {
    // API密钥无效,拒绝访问
    http_response_code(401);
    die('Invalid API key');
}
  1. Hadkan kekerapan akses

Untuk mengehadkan kekerapan akses API setiap alamat IP, kami boleh menyemak bilangan permintaan untuk alamat IP ini dalam tetingkap masa tertentu sambil menyimpan maklumat cap waktu setiap permintaan.

$ip = $_SERVER['REMOTE_ADDR'];
$currentTime = time();
$windowStartTime = $currentTime - 60; // 1分钟的时间窗口
$query = "SELECT COUNT(*) FROM requests WHERE ip = :ip AND created_at > :window_start_time";
$stmt = $pdo->prepare($query);
$stmt->execute(['ip' => $ip, 'window_start_time' => $windowStartTime]);
$requestCount = $stmt->fetchColumn();

if ($requestCount > 10) {
    // 超过请求次数限制,暂时禁止访问
    http_response_code(429);
    die('Too many requests');
}

$query = "INSERT INTO requests (ip) VALUES (:ip)";
$stmt = $pdo->prepare($query);
$stmt->execute(['ip' => $ip]);

3. Pembangunan bahagian hadapan

  1. Antara muka log masuk

Dalam antara muka bahagian hadapan, kami boleh menggunakan Vue.js untuk membina antara muka log masuk pengguna. Pengguna perlu memasukkan nama pengguna dan kata laluan mereka dan klik butang log masuk untuk menghantar permintaan API untuk pengesahan.

<template>
  <div>
    <input v-model="username" placeholder="Username" type="text">
    <input v-model="password" placeholder="Password" type="password">
    <button @click="login">Login</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      username: '',
      password: ''
    }
  },
  methods: {
    login() {
      // 发送API请求进行身份验证
    }
  }
}
</script>
  1. API Request

Selepas pengguna mengklik butang log masuk, kami boleh menggunakan perpustakaan axios Vue.js untuk menghantar permintaan API untuk pengesahan.

login() {
  axios.post('/api/login', {
    username: this.username,
    password: this.password
  }).then(response => {
    // 身份验证成功,保存API密钥到本地存储
    localStorage.setItem('api_key', response.data.api_key);
  }).catch(error => {
    // 处理登录失败的情况
    console.error(error);
  });
}

IV Ringkasan

Dengan menggunakan aplikasi yang dibangunkan dengan PHP dan Vue.js untuk mempertahankan diri daripada serangan akses API berniat jahat, kami boleh melindungi aplikasi kami daripada serangan berniat jahat. Kami boleh meningkatkan keselamatan aplikasi dengan mengehadkan kekerapan akses API, menggunakan kunci API untuk pengesahan, mengesahkan asal permintaan dan menyulitkan data.

Sudah tentu, ini hanyalah salah satu cara untuk melaksanakan pertahanan keselamatan Kami juga boleh melaksanakan lebih banyak langkah keselamatan berdasarkan keperluan sebenar, seperti menggunakan kod pengesahan, menambah tembok api web, dsb. Adalah penting untuk kami mengekalkan tumpuan pada keselamatan siber dan mengemas kini serta meningkatkan pertahanan kami dengan segera untuk memastikan aplikasi kami tahan terhadap serangan berniat jahat.

Atas ialah kandungan terperinci Cara menggunakan PHP dan Vue.js untuk membangunkan aplikasi yang melindungi daripada serangan akses API berniat jahat. 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