2010-11-07 13 views
5

Tengo un sitio web de clasificados simple ...¿Debo usar PDO para desinfectar mis consultas SQL o es "mysql_real_escape_string" suficiente?

Los anuncios se insertan en las tablas de MySql y lo único que uso para desinfectar la entrada del usuario es mysql_real_escape_string.

¿Es esto suficiente?

La DOP es la mejor manera offcourse, pero lo que es en realidad la diferencia entre usar solamente mysql_real_escape_string y PDO, en digamos esta consulta:

SELECT * FROM table_name WHERE table_name.classified = '$classified'; 

O

INSERT INTO table_name (input1, input2) VALUES ('$input1', $input2); 

Gracias

+1

El escape se olvida fácilmente. Las consultas parametrizadas son una metodología * inherentemente más segura *. (Pero, por cierto, sus ejemplos parecen no utilizar ningún enfoque). Otra ventaja de PDO son las posibles ganancias de velocidad. Actualmente es teórico, porque el controlador de PDO MySQL aún recurre al escape en lugar de a los parámetros vinculados. – mario

+1

A menos que realmente necesite la abstracción de la base de datos, se le recomienda no utilizar ni PDO, ni MySql, sino MySqli en su lugar. Tiene soporte para ambos: [vinculante] (http://de2.php.net/manual/en/mysqli-stmt.bind-param.php) y [escaping] (http://de2.php.net/manual /en/mysqli.real-escape-string.php) – Gordon

Respuesta

2

Creo que mysql_real_escape_string es suficiente para almacenar en la base de datos y proteger contra cualquier ataque de inyección sql. Pero otra validación es una buena idea tener solo para que su conjunto de datos sea más regular y menos propenso a contener basura.

Para presentar cualquiera de estos datos, filtrar (a la manera de Drupal, etc.) También es una buena idea.

Cuestiones relacionadas