현재 위치: > 최신 기사 목록> PHP 함수 보안 개선 가이드: SQL 삽입 및 XSS 공격으로부터 보호

PHP 함수 보안 개선 가이드: SQL 삽입 및 XSS 공격으로부터 보호

M66 2025-10-20

PHP 기능 보안 개선 방향

PHP 개발에서는 함수의 안전성을 보장하는 것이 중요합니다. 이 기사에서는 개발자가 보다 안전하고 안정적인 PHP 코드를 작성하는 데 도움이 되는 몇 가지 주요 개선 사항을 소개합니다.

유형 힌트 사용

유형 힌트는 함수에 전달된 매개변수가 올바른 유형인지 확인하여 예상치 못한 데이터 유형으로 인해 발생하는 오류를 방지하고 잠재적인 보안 위험을 줄입니다.

 function add($a, $b): int
{
    return $a + $b;
}

// 일으킬 것이다 TypeError 이상
add('1', 2);

SQL 주입 취약점 제거

SQL 삽입은 일반적인 보안 문제이며 공격자는 악의적인 SQL 문을 삽입하여 민감한 데이터를 얻을 수 있습니다. 매개변수화된 쿼리를 사용하면 SQL 삽입을 효과적으로 방지할 수 있습니다.

 $statement = $conn->prepare("SELECT * FROM users WHERE username = ?");
$statement->bind_param("s", $username);

XSS(교차 사이트 스크립팅) 공격 방지

XSS 공격은 일반적으로 웹 페이지에 악성 스크립트를 삽입하여 수행됩니다. 사용자 데이터를 안전하게 출력하고 스크립트 실행을 방지하려면 HTML 인코딩을 사용하세요.

 function echoHtml($html)
{
    echo htmlspecialchars($html);
}

사용자 입력 검증

사용자 입력에는 악성 코드나 기타 공격 벡터가 포함될 수 있습니다. 불법적인 데이터가 시스템에 유입되는 것을 방지하기 위해 사용하기 전에 엄격한 검증을 수행해야 합니다.

 if (!preg_match('/^[a-zA-Z0-9]+$/', $input)) {
    throw new InvalidArgumentException();
}

안전한 라이브러리 사용

PHP는 해시 값을 안전하게 생성하고 민감한 데이터를 암호화 및 해독하는 데 사용할 수 있는 PasswordHash, Crypto 등과 같은 다양한 보안 라이브러리를 제공합니다.

 $hash = password_hash($password, PASSWORD_DEFAULT);

실제 사례: 기능 보안 강화

사용자 입력을 처리하고 SQL 문을 생성하는 함수가 있다고 가정합니다.

 function generateSql($id)
{
    return "SELECT * FROM users WHERE id = $id";
}

보안을 향상시키기 위해 다음과 같은 개선이 이루어질 수 있습니다.

  • $id가 정수인지 확인하려면 유형 힌트를 사용하세요.
  • 매개변수화된 쿼리를 사용하여 SQL 삽입 방지
 function generateSql($id): string
{
    $statement = $conn->prepare("SELECT * FROM users WHERE id = ?");
    $statement->bind_param("i", $id);
    
    return $statement;
}

이러한 조치를 통해 PHP 기능의 보안이 크게 향상되고 애플리케이션 공격 위험을 줄일 수 있습니다.