저는 아직 PDO를 완전히 배우는 과정에 있지만, SQL Inject URL 매개 변수로 작업 한 경우 오늘 저녁에 확인하면 놀랐습니다. 놀랍게도 작동했습니다. 그래서 나는 생각하기 시작했다. 게시 된 값은 PDO 준비 문을 사용하여 자동으로 위생 처리됩니다. 즉, SQL 쿼리에 문제가 있음을 의미합니다. 맞습니까?PHP PDO가 내 쿼리를 주입으로부터 보호하지 않는 이유는 무엇입니까?
해당 ID를 사용하여 데이터베이스에서 해당 데이터를 수집하려면 GET 변수가 필요한 페이지가 있습니다. 쿼리를 준비하는 기능과 코딩 프로세스를 간소화하기 위해 실행하는 기능을 만들었습니다. 지금 작성한 코드는 다음과 같습니다
$request = $_GET['movie'];
$sql = "SELECT * FROM `movies` WHERE `url` = '$request'";
$db = new database;
$db->setDBC();
$process = $db->executeQuery($sql);
$cmd = $process->fetch(PDO::FETCH_NUM);
$title = $cmd[1];
내가 얻을 PDO 예외는 다음 URL에 ' or 1-1
를 추가 할 때
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''21-31282 ''' at line 1' in C:\xampp\htdocs\filmvote\include\databaseClass.php:33 Stack trace: #0 C:\xampp\htdocs\filmvote\include\databaseClass.php(33): PDOStatement->execute() #1 C:\xampp\htdocs\filmvote\recension.php(9): databaseManagement->executeQuery('SELECT * FROM `...') #2 {main} thrown in C:\xampp\htdocs\filmvote\include\databaseClass.php on line 33
당신은 이런 종류의 오류를 얻을. 이것에 대해 내가 뭘 할 수 있니? 도움에 정말 감사드립니다.
준비된 문 –