[php] PDO 바인딩 매개변수

PHP에서 PDO(Php Data Objects)를 사용하여 데이터베이스에 안전하게 쿼리를 전달하려면 바인딩 매개변수 를 사용해야 합니다.

바인딩 매개변수란?

바인딩 매개변수는 SQL 쿼리 에서 변수를 사용하는 대신 값을 직접 전달하는 것을 피하고, 매개변수의 위치에 placeholder 를 두고 그 값을 나중에 전달하는 방법입니다. 이는 SQL 삽입 공격을 막을 수 있고, 데이터 값을 자동으로 이스케이핑하여 보안을 강화할 수 있습니다.

사용 방법

<?php
// 데이터베이스 연결 설정
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database";
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);

// 바인딩 매개변수를 사용한 쿼리
$stmt = $conn->prepare("SELECT * FROM users WHERE username = :username");
$stmt->bindParam(':username', $username);
$username = 'john_doe';
$stmt->execute();

위 예제에서는 :username바인딩 매개변수 로 사용하고 있습니다. bindParam 또는 bindValue 메서드를 사용하여 매개변수에 값을 바인딩할 수 있습니다.

바인딩하지 않고 변수를 직접 쿼리에 넣는 것은 보안상 위험 하므로, 바인딩 매개변수를 사용하는 것이 권장됩니다.

결론

PHP의 PDO를 사용할 때, 쿼리를 안전하게 전달하기 위해 바인딩 매개변수 를 사용하는 것이 좋습니다. 이를 통해 SQL 삽입 공격을 예방하고 코드를 더 안전하게 만들 수 있습니다.

참고 문헌: PHP: PDO - Manual