verduras protocolo limpieza lechuga frutas desinfectar desinfeccion con cloro php pdo

php - protocolo - desinfectar lechuga con cloro



¿Cómo desinfecto la entrada con DOP? (2)

El punto importante al usar DOP es:

PDO solo lo saneará para SQL, no para su aplicación.

Así que sí, para escrituras, como INSERTAR o ACTUALIZAR, es especialmente crítico filtrar sus datos primero y desinfectarlos para otras cosas (eliminación de etiquetas HTML, JavaScript, etc.).

<?php $pdo = new PDO(...); $stmt = $pdo->prepare(''UPDATE users SET name = :name WHERE id = :id''); $id = filter_input(INPUT_GET, ''id'', FILTER_SANITIZE_NUMBER_INT); // <-- filter your data first $name = filter_input(INPUT_GET, ''name'', FILTER_SANITIZE_STRING); // <-- filter your data first $stmt->bindParam('':id'', $id, PDO::PARAM_INT); // <-- Automatically sanitized for SQL by PDO $stmt->bindParam('':name'', $name, PDO::PARAM_STR); // <-- Automatically sanitized for SQL by PDO $stmt->execute();

Sin desinfectar la entrada del usuario, un pirata informático podría haber guardado un poco de javascript en su base de datos y luego, al publicarlo en su sitio, ¡habría estado expuesto a una amenaza!

http://www.phptherightway.com/#pdo_extension

¿Debo usar mysql_real_escape_string() en mi entrada (como $_POST y $_GET ) cuando uso la biblioteca de PDO ?

¿Cómo puedo escapar correctamente de la entrada del usuario con DOP?


Si usa PDO, puede parametrizar sus consultas, eliminando la necesidad de escapar de cualquier variable incluida.

Vea here para un gran tutorial introductorio para DOP.

Usando PDO, puede separar los parámetros de SQL y los parámetros pasados ​​utilizando sentencias preparadas, esto elimina la necesidad de escapar de las cadenas, ya que las dos se mantienen separadas y luego se combinan en la ejecución, los parámetros se manejan automáticamente como picaduras, de la fuente anterior:

// where $dbh is your PDO connection $stmt = $dbh->prepare("SELECT * FROM animals WHERE animal_id = :animal_id AND animal_name = :animal_name"); /*** bind the paramaters ***/ $stmt->bindParam('':animal_id'', $animal_id, PDO::PARAM_INT); $stmt->bindParam('':animal_name'', $animal_name, PDO::PARAM_STR, 5); /*** execute the prepared statement ***/ $stmt->execute();

Nota: el saneamiento ocurre durante el enlace de la variable ( $stmt->bindParam )

Otros recursos:

http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/

http://www.phpeveryday.com/articles/PDO-Prepared-Statement-P550.html

http://php.net/manual/en/pdo.prepared-statements.php