[PHP] CURL을 이용한 API 데이터 전송
반응형
대부분 API 데이터 전송이라 함은 API Key 를 이용한 1:1 데이터 전송을 말한다
Api Key 는 누출이 되면 안되는 중요한 값으로 유출에 위험성이 있는 POST 및 GET으로는 전송하지 않는다.
CURL의 Header 값을 통해 POST 및 GET 보다는 좀더 안전한 방법으로 Api key 를 체크하여 통신을 진행해보자.
https://www.aaa.com 이라는 사이트에서 https://www.bbb.com 이라는 사이트의 데이터를 받아온다고 가정하자
이하 설명을 위해 도메인은 생략 aaa. bbb로 얘기하겠다.
aaa 사이트의 result.php 페이지에서 curl 통신을 통해 bbb 사이트에서 미리 발급 받은 api key를 header 로 담아 전송을 시도한다.
# 데이터를 받아올 페이지
# https://www.aaa.com/result.php
<?php
$url = "call.php";
$headers = [
"apikey: abc123!@#$%"
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$response = curl_exec ($ch);
curl_close ($ch);
echo $response;
?>
aaa 사이트의 result.php 페이지는 bbb 사이트의 call.php 페이지를 접근하여, api key를 체크한다.
bbb 사이트는 aaa 사이트에서 curl 통신을 통해 넘겨져온 header 에 담긴 api key 값을 를 체크 후 정상적인 key 라면 데이터를 제공하고, 정상적이지 않다면 페이지가 없다는 404 에러를 리턴한다.
# 데이터를 제공할 페이지
# https://www.bbb.com/call.php
<?php
$apiKey = "abc123!@#$%"; // 미리 발급되어 체크할 Apikey
$headers = apache_request_headers();
if($headers['Apikey'] != $apiKey){
exit(header('HTTP/1.1 404 Not Found')); // apikey 체크 후 맞지 않으면 페이지 404 처리
}
# Apikey 체크 후 문제가 없으면 데이터 제공
echo "OK!!";
?>
생각보다 간단한 방법이지만, 보안이나 좀 더 복잡한 전송은 좀 더 공부가 필요하다.
반응형
'Programming > PHP' 카테고리의 다른 글
[PHP] URL 의 이미지가 실제 있는지 확인하는 PHP 소스 (0) | 2025.03.06 |
---|---|
[PHP] 월별 숫자 앞에 0을 넣고 싶을때 (0) | 2022.12.12 |
[PHP] PHP Framework (0) | 2022.11.18 |
[PHP] URL에서 파라미터 값 추출하기 (0) | 2022.11.03 |
[PHP] YouTube Data API v3를 이용한 채널 최신 영상 불러오기 (0) | 2022.11.01 |