[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