Personalmente, me gustaría desactivar magic_quotes. En PHP5 + está deshabilitado por defecto y es mejor codificar como si no estuviera allí, ya que no escapa de todo y se eliminará de PHP6.
A continuación, según el tipo de datos de usuario que filtre, se le indicará qué hacer a continuación, p. si solo es texto, p. un nombre, luego strip_tags(trim(stripslashes()));
o para comprobar si los rangos usan expresiones regulares.
Si espera un cierto rango de valores, cree una matriz de los valores válidos y solo permita esos valores a través de (in_array($userData, array(...))
).
Si está revisando números de utilizar para hacer cumplir is_numeric números enteros o fundido a un tipo específico, que debe evitar que las personas que tratan de enviar cadenas en lugar de él.
Si tiene PHP5.2 +, considere buscar en filter() y hacer uso de esa extensión que puede filtrar varios tipos de datos, incluidas las direcciones de correo electrónico. La documentación no es particularmente buena, pero está mejorando.
Si usted tiene que manejar HTML, entonces debería considerar algo así como PHP Input Filter o HTML Purifier. Purificador HTML también validará HTML para la conformidad. No estoy seguro de si aún está en desarrollo del filtro de entrada. Tanto le permitirá definir un conjunto de etiquetas que se pueden utilizar y qué atributos están permitidos.
Independientemente de lo que decida, recuerde siempre, nunca confíe en nada que ingrese a su script PHP desde un usuario (incluido usted mismo).
htmlentities() es una exageración y es codifica-sensible. htmlspecialchars() protege igual de bien. – Kornel
htmlspecialchars no puede ser su amigo: http://stackoverflow.com/questions/110575/do-htmlspecialchars-and-mysqlrealescapestring-keep-my-php-code-safe-from-injec – Cheekysoft
@Cheekysoft: Sólo hay que establecer la [apropiada flags] (http://au.php.net/htmlspecialchars#refsect1-function.htmlspecialchars-parameters) – Casebash