>백엔드 개발 >PHP 튜토리얼 >PHP 및 Vue.js를 사용하여 악의적인 API 액세스 공격으로부터 보호하는 애플리케이션을 개발하는 방법

PHP 및 Vue.js를 사용하여 악의적인 API 액세스 공격으로부터 보호하는 애플리케이션을 개발하는 방법

WBOY
WBOY원래의
2023-07-05 19:42:10662검색

PHP 및 Vue.js를 사용하여 악성 API 액세스 공격을 방어하는 애플리케이션을 개발하는 방법

악성 API 액세스 공격은 현재 인터넷 애플리케이션이 직면하고 있는 심각한 보안 위협입니다. 악의적인 공격으로부터 애플리케이션을 보호하려면 이러한 공격을 방어하기 위한 몇 가지 효과적인 조치를 취해야 합니다.

이 글에서는 PHP와 Vue.js를 사용하여 악의적인 API 액세스 공격을 방어할 수 있는 애플리케이션을 개발하는 방법을 소개합니다. PHP를 백엔드 언어로 사용하여 API 요청을 처리하고 사용자를 인증하고 Vue.js를 프런트엔드 프레임워크로 사용하여 사용자 인터페이스를 구축하고 사용자 상호 작용을 처리합니다.

1. 방어 전략

코딩을 시작하기 전에 먼저 애플리케이션을 보호하기 위한 효과적인 방어 전략을 정의해야 합니다. 다음은 몇 가지 일반적인 방어 전략입니다.

  1. API 액세스 빈도 제한: API 액세스 빈도를 제한하여 악의적인 공격의 영향을 줄일 수 있습니다. 예를 들어, 동일한 IP 주소가 특정 횟수만큼만 API에 액세스할 수 있는 기간을 설정할 수 있습니다. 개수 제한을 초과하는 경우 해당 IP 주소에 대한 접근을 일시적으로 금지할 수 있습니다.
  2. API 키 사용: 합법적인 사용자만 API에 액세스할 수 있도록 인증에 API 키를 사용할 수 있습니다. 모든 API 요청에서 사용자는 성공적인 액세스를 위해 유효한 API 키를 제공해야 합니다.
  3. 요청 소스 확인: 합법적인 소스만 API에 액세스할 수 있도록 각 API 요청의 소스를 확인해야 합니다. 이는 요청 헤더의 Referer를 확인하거나 IP 주소를 통해 확인할 수 있습니다.
  4. 데이터 암호화: 전송 중에 데이터가 변조되는 것을 방지하려면 민감한 데이터를 암호화해야 합니다. HTTPS를 사용하여 데이터를 안전하게 전송할 수 있습니다.

2. 백엔드 개발

  1. API 키 생성

먼저 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
);
  1. API 키 생성

사용자가 성공적으로 등록하거나 로그인한 후 각 사용자에 대해 고유한 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]);
  1. 인터페이스 확인

모든 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');
}
  1. 액세스 빈도 제한

각 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. 프론트 엔드 개발

  1. 로그인 인터페이스

프런트 엔드 인터페이스에서는 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>
  1. API 요청

사용자가 로그인 버튼을 클릭한 후 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.