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:
2. Pembangunan bahagian belakang
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 );
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]);
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'); }
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
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>
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!