Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/11/2010, 14:26
nomafeito
 
Fecha de Ingreso: octubre-2010
Mensajes: 69
Antigüedad: 13 años, 6 meses
Puntos: 1
Paranoia en seguiridad con PHP

Bueno, estoy haciendo mi primera página web, y antes de colgarla estoy empezando a ser paranoico con esto de la seguridad, considero varios puntos importantes a hacer cuando quiero blindar la aplicación ante posibles ataques, XSS injection, indexación, etc... y que me gustaría comentarles y que quiero que participeis porque tengo varias dudas sobre su efectividad (nada es 100% seguro, pero un mínimo de seguridad es recomendable).

El registro de usuario voy a meterlo en una tabla mysql donde aparte de los datos personales como email y password, les meto además un tokenid.

Cada inicio de sesión aplico un regenerate_sessionid, así como creo un token basado en un numero aleatorio que guardo en una tabla para testear en cada página.

Los passwords hay que guardarlos en hash, aunque este hash es una combinación de elementos como el seed de un numero aleatorio, el numero aleatorio, el propio password y el username. (esto por tomar un ejemplo).

Jamás debo aplicar directamente con post[] al insertar datos en una tabla, antes paso el post a una variable, y lo "sanitizo" (aplico regular expresions, y demás filtros para comprobar que son datos correctos) y luego inserto dicha variable a la tabla.

Lo que me preocupa es si es seguro crear una clase usuario con sus datos para no tener que leer constantemente la tabla mysql y luego pasar la variable de esa clase a través de páginas por medio de sesiones. Y simplemente para comprobar si el usuario es el que dice ser solo compruebo el token que está registrado en su clase esté también en la tabla. Sería buena idea que la función que revise dicho token también lo renueve (vuelva a crear otro token nuevo y vuelva a guardar este token en la clase del usuario y su tabla).

Creo una lista de palabras prohibidas para comparar los inputs de los usuarios si coincide alguna guardo el ip en una lista negra de suspensión temporal o indefinida (pero como existen las ips dinámicas no lo veo factible).

Crear siempre capchas en los forms de registro.

¿es recomendable aplicar serialize a una variable que es una instancia a una clase antes de guardarlo en una sessión?

Bueno, vosotros contareis, un saludo.

Última edición por nomafeito; 16/11/2010 a las 14:59