Entonces, me preguntaba si esto es suficiente para estar seguro de que el usuario no hará ninguna inyección de SQL y el número será único y siempre entero. La función $ id en getArticle está vinculada a la consulta SQL.¿Es (int) y is_int() seguro para proteger contra las inyecciones de SQL?
<?php $id = (isset($_GET['id']) && is_int((int)$_GET['id'])) ? (int)$_GET['id'] : false ?>
<?php $news = $class->getArticle($id) ?>
Por lo que he probado, funcionó bien, pero como no estoy del todo seguro, prefiero preguntarte guyz! Ok, la gente dice que las declaraciones preparadas harían el truco. ¿Realmente lo harían? Al igual que, ¿puedo estar totalmente seguro de que si bind param como entero será entero nada más?
¡Gracias de antemano!
Creo que la prueba de 'is_int ((int) [ANYTHING])' siempre devolverá 'true' y, por lo tanto, es redundante. Use 'is_numeric' para probar si algo ** se puede convertir a ** an' int' y luego use '(int)' para llevar a cabo la conversión. O deje el primer paso, ya que (int) creará un 'int' de 0 en valores irreconocibles. – MvanGeest
tenga cuidado si su parámetro $ _GET proviene de un formulario | bool is_int (mixed $ var) | Encuentra si el tipo de la variable dada es entero. Nota: Para probar si una variable es un número o una cadena numérica (como la entrada del formulario, que siempre es una cadena), debe usar is_numeric(). – Redlab