[PHP] #15 PHP로 JSON 응답처리, 파싱부터 API 응답까지 완벽 정리!

2025. 7. 26. 16:00·Programming/PHP
반응형

 

 

안녕하세요, 토스트 데브입니다!
웹 개발에서 빠질 수 없는 데이터 형식, 바로 JSON입니다.
PHP에서도 JSON 데이터를 쉽게 주고받을 수 있으며, API 연동이나 프론트-백엔드 통신에서 필수적으로 사용됩니다.

 

 

✅ JSON이란?

JSON (JavaScript Object Notation)은 데이터를 구조화된 텍스트 형태로 표현하는 형식입니다.
HTML보다 가볍고, XML보다 간결하며, 거의 모든 언어에서 쉽게 파싱할 수 있어 API 통신에 가장 널리 사용됩니다.

 

 

✅ PHP에서 JSON 파싱 (디코딩) – json_decode()

예: JSON 문자열 → PHP 객체

$json = '{"name": "토스트", "email": "toast@example.com"}';
$data = json_decode($json);

echo $data->name;  // 출력: 토스트

예: JSON 문자열 → 연관 배열

$data = json_decode($json, true);  // true = 배열 반환
echo $data["email"];  // 출력: toast@example.com

 

 

✅ PHP에서 JSON 생성 (인코딩) – json_encode()

$user = [
  "name" => "toastdev",
  "email" => "toast@example.com"
];

echo json_encode($user);

📌 예시 결과 

{"name":"toastdev","email":"toast@example.com"}

 

 

✅ JSON 인코딩 옵션

json_encode() 함수에는 다양한 옵션 플래그를 사용할 수 있습니다.

옵션 설명
JSON_PRETTY_PRINT 보기 좋게 들여쓰기된 출력
JSON_UNESCAPED_UNICODE 한글을 유니코드로 이스케이프하지 않음
JSON_UNESCAPED_SLASHES 슬래시(/)를 이스케이프하지 않음
JSON_NUMERIC_CHECK 문자열 숫자를 자동으로 숫자로 변환

예제

$data = ["이름" => "토스트", "사이트" => "https://toast.dev"];

echo json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);

 

 

✅ JSON 응답을 활용한 간단한 PHP API 구현

1. API 응답용 PHP 파일 (예: user-api.php)

<?php
header('Content-Type: application/json; charset=utf-8');

$user = [
  "name" => "토스트",
  "email" => "toast@example.com",
  "joined" => date("Y-m-d")
];

echo json_encode($user, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
?>

📌 header('Content-Type: application/json')를 꼭 설정해야 브라우저와 클라이언트가 JSON임을 인식합니다.

 

 

✅ JSON 데이터 검증 (Validation)

입력으로 받은 JSON이 올바른지 확인할 수 있습니다.

$json = file_get_contents("php://input");
$data = json_decode($json, true);

if (json_last_error() !== JSON_ERROR_NONE) {
  echo json_encode(["error" => "잘못된 JSON 형식입니다."]);
  exit;
}

📌 json_last_error()와 json_last_error_msg()를 사용하면 디버깅이 쉬워집니다.

 

 

✅ 보안 고려사항

1. ❗ XSS(크로스사이트 스크립팅)

JSON 출력 시 HTML과 결합하면 스크립트 삽입 공격에 노출될 수 있습니다.
htmlspecialchars() 또는 JSON 전용 Escape 처리를 적용하세요.

$safe = htmlspecialchars($data["comment"], ENT_QUOTES, "UTF-8");

 

2. ❗ CSRF 공격

JSON API에서도 CSRF 토큰을 검증하는 습관을 들이세요.
예: POST 요청 시 헤더 또는 본문에 토큰 포함 후 서버에서 검증.

 

3. ❗ 민감한 데이터 포함 금지

API 응답 시 비밀번호, 토큰, 내부 정보 등 민감한 데이터가 포함되지 않도록 주의하세요.

unset($user["password"]);  // 반드시 제거

 

4. ❗ JSONP (callback) 사용 금지

옛날 방식인 JSONP는 CORS 보완이 아닌 보안 구멍이 될 수 있습니다.
JSONP는 반드시 피하고, CORS 정책을 설정하는 방식을 사용하세요.

 

 

✨ 마무리 요약

  • ✅ json_decode()는 문자열 → PHP 객체/배열
  • ✅ json_encode()는 PHP 배열/객체 → JSON 문자열
  • ✅ JSON 응답 시 Content-Type 헤더는 필수
  • ✅ json_last_error()로 에러를 확인하고 방어 코드를 작성
  • ✅ 보안상 XSS, CSRF, 민감 정보 노출에 특히 주의!

 

 

REST API등 다양한 API 환경이 XML과 JSON 형식으로 이루어 지기 때문에 웹 배우시는 여러분들 께서는 XML과 JSON에 대해 꼭 자세히 이해하고 넘어가는 것이 좋습니다. 

 

#PHPJSON #json_decode #json_encode #PHPAPI #JSON응답 #PHP보안 #XSS방지 #CSRF방지 #웹개발기초 #프로그래밍입문 #PHP기초 #toastdev #API보안 #JSON검증

반응형
저작자표시 비영리 (새창열림)

'Programming > PHP' 카테고리의 다른 글

[PHP] #14 PHP로 XML 응답 처리 하는 방법, 외부 데이터 읽기 및 파싱 가이드!  (0) 2025.07.25
[PHP] #13 PHP 세션(Session)과 쿠키(Cookie) 완벽 이해하기  (2) 2025.07.24
[PHP] #12 PHP 폼 데이터 입력 검증 및 보안, 안전한 웹 개발의 시작  (0) 2025.07.23
[PHP] #11 PHP 폼 데이터 처리, GET과 POST 처리 방식까지 완벽정리!  (2) 2025.07.22
[PHP] #10 PHP 함수(Function), 정의, 호출, 매개변수, 변환값, 배열 변환까지 완벽 정리!  (0) 2025.07.21
'Programming/PHP' 카테고리의 다른 글
  • [PHP] #14 PHP로 XML 응답 처리 하는 방법, 외부 데이터 읽기 및 파싱 가이드!
  • [PHP] #13 PHP 세션(Session)과 쿠키(Cookie) 완벽 이해하기
  • [PHP] #12 PHP 폼 데이터 입력 검증 및 보안, 안전한 웹 개발의 시작
  • [PHP] #11 PHP 폼 데이터 처리, GET과 POST 처리 방식까지 완벽정리!
TOASTDEV
TOASTDEV
인스턴트 코딩 #토스트데브 #토스트뎁 #코딩공부 #개발입문
  • TOASTDEV
    토스트뎁
    TOASTDEV
    • 분류 전체보기 (59) N
      • 알쓸신잡 (20)
        • 코딩에 대하여 (13)
        • 컴퓨터에 대하여 (5)
        • IT 국내외 소식 (2)
      • Web Front (6)
        • HTML (6)
        • CSS (0)
        • JavaScript (0)
      • Programming (15)
        • PHP (15)
      • Database (7) N
        • SQL (7) N
        • MySQL (0)
      • Server (11) N
        • Linux (11) N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • Youtube Toastdev
    • Naver Blog
  • 공지사항

    • [유튜브] 유튜브 영상 업로드 안내
  • 인기 글

  • 태그

    서버입문
    sql
    코딩입문
    php문법
    HTML
    데이터베이스
    html기초
    코딩기초
    dbms
    웹개발
    SQL문법
    ict
    php
    SQL강의
    프론트엔드
    리눅스서버
    웹개발기초
    SQL기초
    웹프로그래밍
    php코딩
    데이터분석
    리눅스기초
    서버관리
    php입문
    ubuntu서버
    웹개발입문
    ubuntuserver
    php기초
    코딩공부
    우분투서버
  • 최근 댓글

  • 최근 글

  • 전체
    오늘
    어제
  • 반응형
  • hELLO· Designed By정상우.v4.10.3
TOASTDEV
[PHP] #15 PHP로 JSON 응답처리, 파싱부터 API 응답까지 완벽 정리!
상단으로

티스토리툴바