Biorąc pod uwagę następujący fragment kodu, Czy muszę uciec i odkażać $city
?Czy muszę odkażać dane wejściowe, jeśli korzystam z przygotowanych zapytań PHP/MySQL?
<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$city = "Amersfoort";
/* create a prepared statement */
if ($stmt = $mysqli->prepare("SELECT District FROM City WHERE Name=?")) {
/* bind parameters for markers */
$stmt->bind_param("s", $city);
/* execute query */
$stmt->execute();
/* bind result variables */
$stmt->bind_result($district);
/* fetch value */
$stmt->fetch();
printf("%s is in district %s\n", $city, $district);
/* close statement */
$stmt->close();
}
/* close connection */
$mysqli->close();
?>
Czy należy odkażać dane wejściowe podczas korzystania z przygotowanych zapytań?
Drzewa stanęły na drodze do lasu. ;) –
Tak, ale przygotowane instrukcje często wymagają więcej zasobów zarówno na warstwie aplikacji, jak i na warstwie danych - zachowaj ostrożność, gdy zobaczysz, że ktoś mówi: "zawsze używaj przygotowanych instrukcji". – Jmoney38
@ Jmoney38 Uważam, że każde rozwiązanie powinno być starannie przemyślane, a nie tylko wybierane, ponieważ wydaje się, że jest to powszechna praktyka. – Sander