Prácticamente todas las aplicaciones en PHP o MySQL están desarrolladas para la web y la web es un sitio peligroso ya que existen diversos métodos para burlas este tipo de aplicaciones.
Podemos agrupar este tema en dos ideas:
Todos los datos de entrada están contaminados, así el dato que se incluye este muy limpio de todas formas debemos añadir seguridad y limpiar los datos considerando:
Es una directiva de configuración que automáticamente inyecta variables en el script. Desactivado por defecto desde PHP 4.2.0 y no debería activarse.
Todos los datos recibidos por PHP (GET/POST/COOKIE) son cadenas de texto. Hay que convertirlos a números para que sea más eficiente y menos peligroso.
Deben ser convertidos a números mediante un casting:
PHP viene por defecto con CTYPE, una extensión que permite de manera cómoda validar cadenas de texto. Y otras muchas más funciones.
¿Como validar un email, una URL, una IP, un DNI, una fecha? Expresiones regulares. No hace falta saber expresiones regulares, sólo saber dónde encontrarlas.
Entre las maneras más eficaces podemos destacar:
Evitar que el código generado por nuestra aplicación pueda resultar dañino, dependiendo del dónde imprimamos la información las reglas de escapado son diferentes.
Escapando datos para generar HTML
La solución para todo es htmlentities()
Ejemplo: Escapando datos para generar SQL
La solución para escapar datos en MySQL es *_escape_string()
Ejemplo: Bueno hasta aquí la pimera parte de este tutorial, Pueden leer la segunda parte.
Podemos agrupar este tema en dos ideas:
INSEGURIDAD - SEGURIDAD
¿Por qué hay que validar los datos de entrada?
Todos los datos de entrada están contaminados, así el dato que se incluye este muy limpio de todas formas debemos añadir seguridad y limpiar los datos considerando:
- Evitar comportamientos no esperados de la aplicación.
- Evitar ganar acceso a una aplicación a la que no está autorizado.
- Evitar que la aplicación “se rompa” de manera malintencionada.
Register Globals
Es una directiva de configuración que automáticamente inyecta variables en el script. Desactivado por defecto desde PHP 4.2.0 y no debería activarse.
Un ejemplo de un Formulario
Validación numérica
Todos los datos recibidos por PHP (GET/POST/COOKIE) son cadenas de texto. Hay que convertirlos a números para que sea más eficiente y menos peligroso.
Deben ser convertidos a números mediante un casting:
Validación de texto
PHP viene por defecto con CTYPE, una extensión que permite de manera cómoda validar cadenas de texto. Y otras muchas más funciones.
Validación complejas
¿Como validar un email, una URL, una IP, un DNI, una fecha? Expresiones regulares. No hace falta saber expresiones regulares, sólo saber dónde encontrarlas.
Asegurar formularios
Entre las maneras más eficaces podemos destacar:
- Deshabilitar Javascript.
- Enviar formularios desde web.
- Instalando Firebug.
¿En que consiste todo esto?
Evitar que el código generado por nuestra aplicación pueda resultar dañino, dependiendo del dónde imprimamos la información las reglas de escapado son diferentes.
Escapando datos para generar HTML
La solución para todo es htmlentities()
Ejemplo: Escapando datos para generar SQL
La solución para escapar datos en MySQL es *_escape_string()
Ejemplo: Bueno hasta aquí la pimera parte de este tutorial, Pueden leer la segunda parte.