2013-01-31 4 views
3

나는 PDO::Prepare 함수가 안전 쿼리를 생성한다는 것을 읽었습니다. 이스케이프 문자가 수동으로 문자 그대로 입력 될 필요가 없다는 것을 의미합니까? 백 슬래시 문자 등.PDO : 안전 준비

답변

5

아니요 절대적으로 그런 것은 아닙니다. 읽은 내용은 오해의 소지가 있습니다.

"준비된 문"과 "매개 변수가있는 쿼리"사이에는 차이가 있습니다. 당신은 위생 목적으로 후자를 원한다. 예를 들어

:

$pdo->prepare("SELECT * FROM t1 WHERE col1 = $USER_PROVIDED_VALUE"); 

가 준비되어 전혀하더라도 안전하지 않습니다. 대신, 당신은이 작업을 수행해야한다 : 쿼리가 제대로을 매개 변수화하지 않는 경우 보안의 관점에서 당신을 위해 아무것도하지 않을 준비

$stmt = $pdo->prepare("SELECT * FROM t1 WHERE col1 = ?"); 
$stmt->execute(array($USER_PROVIDED_VALUE)); 

.