PHP 및 Vue.js를 사용하여 악성 API 액세스 공격을 방어하는 애플리케이션을 개발하는 방법
악성 API 액세스 공격은 현재 인터넷 애플리케이션이 직면하고 있는 심각한 보안 위협입니다. 악의적인 공격으로부터 애플리케이션을 보호하려면 이러한 공격을 방어하기 위한 몇 가지 효과적인 조치를 취해야 합니다.
이 글에서는 PHP와 Vue.js를 사용하여 악의적인 API 액세스 공격을 방어할 수 있는 애플리케이션을 개발하는 방법을 소개합니다. PHP를 백엔드 언어로 사용하여 API 요청을 처리하고 사용자를 인증하고 Vue.js를 프런트엔드 프레임워크로 사용하여 사용자 인터페이스를 구축하고 사용자 상호 작용을 처리합니다.
1. 방어 전략
코딩을 시작하기 전에 먼저 애플리케이션을 보호하기 위한 효과적인 방어 전략을 정의해야 합니다. 다음은 몇 가지 일반적인 방어 전략입니다.
2. 백엔드 개발
먼저 API 키 관련 정보를 저장할 테이블을 데이터베이스에 생성해야 합니다. 예를 들어, id, user_id, api_key, Created_at 필드를 사용하여 api_keys라는 테이블을 생성할 수 있습니다.
CREATE TABLE api_keys ( id INT PRIMARY KEY AUTO_INCREMENT, user_id INT, api_key VARCHAR(255), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
사용자가 성공적으로 등록하거나 로그인한 후 각 사용자에 대해 고유한 API 키를 생성할 수 있습니다. PHP의 uniqid 함수를 사용하여 임의의 API 키를 생성하고 이를 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]);
모든 API 요청에서 우리는 사용자의 신원과 API 키의 유효성을 확인해야 합니다. 요청 헤더의 Authorization 필드를 구문 분석하고 api_keys 테이블을 쿼리하여 API 키의 존재를 확인할 수 있습니다.
$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'); }
각 IP 주소의 API 액세스 빈도를 제한하기 위해 각 요청의 타임스탬프 정보를 저장하면서 특정 기간 내에 해당 IP 주소에 대한 요청 수를 확인할 수 있습니다.
$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. 프론트 엔드 개발
프런트 엔드 인터페이스에서는 Vue.js를 사용하여 사용자 로그인 인터페이스를 구축할 수 있습니다. 사용자는 사용자 이름과 비밀번호를 입력하고 로그인 버튼을 클릭하여 인증을 위한 API 요청을 보내야 합니다.
<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>
사용자가 로그인 버튼을 클릭한 후 Vue.js의 axios 라이브러리를 사용하여 인증을 위한 API 요청을 보낼 수 있습니다.
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. 요약
PHP 및 Vue.js로 개발된 애플리케이션을 사용하여 악의적인 API 액세스 공격을 방어함으로써 우리는 악의적인 공격으로부터 애플리케이션을 효과적으로 보호할 수 있습니다. API 액세스 빈도를 제한하고, 인증을 위해 API 키를 사용하고, 요청 원본을 확인하고, 데이터를 암호화함으로써 애플리케이션 보안을 향상할 수 있습니다.
물론 이는 보안 방어를 구현하는 방법 중 하나일 뿐이며 실제 필요에 따라 인증 코드 사용, 웹 방화벽 추가 등 더 많은 보안 조치를 구현할 수도 있습니다. 우리는 사이버 보안에 중점을 두고 애플리케이션이 악의적인 공격에 저항할 수 있도록 방어 수단을 신속하게 업데이트 및 개선하는 것이 중요합니다.
위 내용은 PHP 및 Vue.js를 사용하여 악의적인 API 액세스 공격으로부터 보호하는 애플리케이션을 개발하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!