[PHP] 11장. PHP 보안 고려하기

1. 사용자 입력 검증

사용자 입력을 검증하는 방법은 filter_var()와 htmlspecialchars()를 사용해 입력을 안전하게 처리할 수 있습니다.

  • filter_var()

filter_var() 함수는 입력값을 검증하고 필터링하는 데 사용함

$email = filter_var($_POST['email'], FILTER_SANITIZE_EMAIL);
if(filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
    echo "유효하지 않는 이메일 주소입니다.";
}
  • htmlspecialchars()

htmlspecialchars() 함수는 HTML 특수 문자를 변환하여 XSS(교차 사이드 스크립팅) 공격을 방지

$username = htmlspecialchars($_POST['username'], ENT_QUOTES, 'UTF-8')

 


2. SQL 인젝션 방지

SQL 인젝션을 방지하기 위해서 준비된 문(statement)을 사용하는 것이 가장 효과적입니다. PDO(PHP Data Objects) 또는 MySQLi를 사용해 준비된 문을 생성할 수 있습니다.

<?php
   try {
    $pdo = new PDO('mysql:host=localhost;dbname=php', 'pace', '1234');
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $stmt = $pdo->prepare("SELECT * FROM users WHERE email = :email");
    $stmt->bindParam(':email', $email);
    $stmt->execute();

    $result = $stmt->fetchAll();
   } catch (PDOException $e) {
    echo "Error: " . $e->getMessage();
   } 
?>

요약

  • 사용자 입력은 filter_var()와 htmlspecialchars()를 통해 검증하고 필터링
  • SQL 인젝션을 방지하기 위해 준비된 문을 사용
 

GitHub - Koras02/php-tutorial

Contribute to Koras02/php-tutorial development by creating an account on GitHub.

github.com

 

LIST