가능한 중복 :
How prepared statements can protect from SQL injection attacks?
나는 아직도 그것을 탈출해야합니까 PDO와 $ _GET을 사용하고 있다면? 내 이해는 SQL 주입에 면역성이있다. 그러나 나는 여전히 그것을 빠져 나가지 않는 것에 대해 불안하다. 그래서 누군가가이 작은 코드 블록을보고 그것이 안전한지 말해 줄 수 있습니까?
<?php
$hostname = 'localhost';
$username = 'root';
$password = 'root';
$database = 'database';
try {
$dbh = new PDO("mysql:host=$hostname;dbname=$database", $username, $password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $dbh->prepare("SELECT * FROM comments WHERE pid = :pid");
$pid = $_GET['pid'];
$stmt->bindParam(':pid', $pid, PDO::PARAM_STR);
$stmt->execute();
$result = $stmt->fetchAll();
}
catch(PDOException $e)
{
echo $e->getMessage();
}
$stmt->execute();
echo $stmt->rowCount();
$dbh = null;
?>
다시 말하면, 내가 걱정하는 것은 $ _GET입니다. 도움이된다면 고맙습니다.
준비된 쿼리를 위해 변수를 이스케이프해야하는 경우 준비가 거의 필요하지 않습니다. – zerkms
즉, 준비된 문구 자리 표시 자로 원하는 것을 채우십시오. DB는 이스케이프를 처리합니다. 그 데이터는 어디서 왔는지. –
탈출로 인해 "데이터"가 안전하지 않다는 것을 이해하는 사람에게는 아주 재미있는 불안감이 있습니다. –