상세 컨텐츠

본문 제목

PHP MySQL Prepared Statements (PDO) 인젝션 공격 방어

php

by 개발일지작성 2024. 3. 25. 23:21

본문

728x90

1. Query 구문 분석을 1회만 수행

2. 매개 변수만 전달하기 때문에 서버 대역폭 최소화

3. SQL Injection 공격을 막아줌

 

인젝션은 공격자가 신뢰할 수 없는 입력을 프로그램에 주입하도록 하는 공격을 의미함

이를 통해 해당 프로그램의 실행 과정의 변경을 유도하거나 공격자의 변결 질의를 통해 결과값을 다르게 나오도록 할 수 있음

 

<?php
include "db.php";

try{
// 데이터베이스에 쿼리를 보내기 전에 쿼리를 준비 이 때, 쿼리에 사용되는 값은 :placeholder와 같은 형태로 지정
$stmt = $conn->prepare("INSERT INTO myguest (firstname, lastname, email)
VALUES (:firstname, :lastname, :email)");

// placeholder에 값을 바인딩, 값이 쿼리에 직접 들어가는게 아니라 바인딩된 값을 통해 쿼리가 실행
$stmt->bindParam(':firstname', $firstname);
$stmt->bindParam(':lastname', $lastname);
$stmt->bindParam(':email', $email);

$firstname = "John";
$lastname = "Doe";
$email = "john@example.com";
$stmt->execute();

$firstname = "Julie";
$lastname = "Dooley";
$email = "jolie@example.com";
// 바인딩된 값을 사용하여 쿼리 실행
$stmt->execute();
} catch (PDOException $e) {
    echo $e->getMessage();
}

$conn = null;

'php' 카테고리의 다른 글

PHP curl  (0) 2024.03.26
PHP short_open_tag  (0) 2024.03.26
Excel 내용 DB에 저장  (0) 2024.03.25
쿠키 생성  (1) 2024.03.22
간단한 이미지 갤러리 (디자인, DB, 페이징, 썸네일 x)  (1) 2024.03.22

관련글 더보기