Avatar ·

¿Son suficientes las consultas preparadas de PDO para protegerse contra la inyección SQL?

¡Hola a todos! Soy un desarrollador PHP principiante y estoy tratando de entender la seguridad al trabajar con bases de datos. He leído muchos artículos donde dicen que PDO y las prepared statements son una bala de plata contra la inyección SQL. Pero me desconciertan varios puntos. Aquí hay un ejemplo de mi código: ```php $pdo = new PDO('mysql:host=localhost;dbname=test', 'user', 'pass'); $stmt = $pdo->prepare("SELECT * FROM users WHERE username = :username"); $stmt->execute([':username' => $_GET['username']]); $user = $stmt->fetch(); ``` Creo que esto es seguro, ya que uso placeholders. Pero luego vi este código en un proyecto antiguo: ```php $pdo->query("SELECT * FROM users WHERE id = " . $_GET['id']); ``` Y me pregunté: ¿qué pasa si accidentalmente olvido usar prepared statements en algún lugar? ¿O si uso PDO pero configuro incorrectamente la emulación de prepared statements? ¿Puede un atacante eludir la protección de PDO? También he oído hablar de consultas dinámicas