Seguridad en php y mysql.
Enviado por Edgar Ávalos • 5 de Diciembre de 2016 • Apuntes • 657 Palabras (3 Páginas) • 244 Visitas
SEGURIDAD EN PHP Y MYSQL
La seguridad en PHP es una de las cosas más importantes hoy en día, y creo a mi parecer después de haber visto varios trabajos de otros programadores, que muchos no se preocupan en demasia por ella.
Supongamos que enviamos un id por GET y dicho id identifica un auto_increment en nuestra base de datos, qué es lo primero que deberíamos comprobar?
Lo primero que se debería comprobar es que el GET sea númerico de manera tal que si no es númerico tire algún error y no se ejecute la consulta a nuestra base de datos.
Pagina:
www.tusitio.com/index.php?id=1
if (ereg("^[0-9]+$",$_GET[id])) { echo "El id es númerico ejecutemos el codigo y sus respectivas consultas"; } else { "El id no es númerico, tiremos un error y matemos el script"; } ?>
Al ingresar en index.php?id=1 Esa pequeña linea lo que hará es comprobar que el campo ID sea númerico y de esa manera protejer parte del script.
Otro tema importante es cuando enviamos por method post diferentes variables. Podemos A comprobar con Ereg y expresiones regulares que los campos contengan SOLO lo que uno quiere (como ser el caso de EDAD, que debería ser númerico, o Dia mes año, etc.etc. muchas cosas que se pueden comprobar con EREG y hacen el script un poco más seguro)
Otro detalle es además de todo esto utilizar determinadas funciones que hacen nuestro script más seguro como ser:
mysql_real_escape_string();
strip_tags();
Lo que hace mysql_real_escape string es comprobar un campo y fijarse si hay posibilidad de que puedan hacer un intento de defacing o algo similar, si hay posibilidad modifica el string y lo deja seguro para ser pasado en una consulta a la base de datos.
Mientras que Strip Tags lo que hace es quitar todo el codigo html de un string de manera tal que el solo queden en el string carácteres alfanúmericos.
Ahora qué pasa si necesitamos que el string contenga cualquier caracter incluyendo lo que parecería ser HTML?
En ese caso diría de usar mysql_real_escape_string(); para enviar el string a la base de datos y luego para mostrarlo haría que todo el string sea pasado por htmlentities() de esta manera los caracteres del string son reemplazados por su equivalente en codificación en HTML, y no generarían ningún problema.
Entonces para pasar datos a la base de datos comprobamos siempre que la variable contenga solo los datos que nosotros queremos, de esa manera limitamos completamente al usuario, y por supuesto, limitamos de manera hermosa a los defacers.
...