Foros del Web » Programando para Internet » PHP »

Seguridad en php

Estas en el tema de Seguridad en php en el foro de PHP en Foros del Web. Buenas! Estoy construyendo una web con php, JavaScript y AJAX, y por el momento tengo casi toda la web funcional (y en modo local, claro). ...
  #1 (permalink)  
Antiguo 12/04/2012, 07:30
 
Fecha de Ingreso: abril-2012
Ubicación: 41°37′00″N, 00°37′00″E
Mensajes: 462
Antigüedad: 12 años
Puntos: 33
Busqueda Seguridad en php

Buenas!
Estoy construyendo una web con php, JavaScript y AJAX, y por el momento tengo casi toda la web funcional (y en modo local, claro).

Antes de subirla a internet, me gustaría hacerla más segura, y me gustaría que me dierais algunos consejos (los básicos los conozco).

Por ahora lo que he hecho, o tengo pendiente de hacer (seguramente me deje alguno) es:
- sustituir caracteres que puedan interrumpir sentencias sql (comillas simples, por ejemplo)
- control de usuarios registrados
- evitar parámetros get (los tengo casi todos en post o incluso algunos hidden)
- comprobar datos de la sesión
- evitar que entren en páginas "index" de cualquier directorio

Sin embargo, me gustaría poder añadir más, como por ejemplo algún tipo de cifrado para datos sensibles (id's, passwords...), y demás cosas que seguro harían mi web más segura.

He estado buscando libros acerca de este tema y no los encuentro...

Quedo abierto a cualquier comentario (incluso si me podéis recomendar libros sobre el tema, mejor )

Gracias!!
  #2 (permalink)  
Antiguo 12/04/2012, 08:43
Avatar de zalito12  
Fecha de Ingreso: noviembre-2011
Ubicación: Coruña, España
Mensajes: 430
Antigüedad: 12 años, 5 meses
Puntos: 67
Respuesta: Seguridad en php

Bueno, yo no es que te peuda prestar mucha ayuda porque la seguridad es lo que peor llevo en PHP así que ya de paso estaré atento a este post para ver si aprendo yo tambien jeje.

Una cosa sí te quería decir: evitar parámetros get (los tengo casi todos en post o incluso algunos hidden)
Con respecto a los hidden, los campos hidden ahora mismo son más bien a nivel funcional y de estilo (para pasar un campo que no quieres mostrar por que no hace falta pero encesitas) por que a nivel de seguridad ahora mismo son prácticamente nulos.
Haces un Inspeccionar en el form y a cambiar valores!!

Ah y con: sustituir caracteres que puedan interrumpir sentencias sql, Supongo que te refieres a controlar inyecciones sql con las funciones que php nos ofrece, no?

Bueno, a ver si nos ilustra algún experto en seguridad, aunque ya te adelanto que en esto no hay nada 100% seguro, y si alguien quiere molestar, molestará.
  #3 (permalink)  
Antiguo 12/04/2012, 08:50
 
Fecha de Ingreso: abril-2012
Ubicación: 41°37′00″N, 00°37′00″E
Mensajes: 462
Antigüedad: 12 años
Puntos: 33
Respuesta: Seguridad en php

zalito: en cuanto a los hidden, los uso generalmente para pasar "parámetros" (por ejemplo algún identificador para hacer depende qué cosas en una función), y lo del sql, si, es evitar la sql injection (ahora no me acuerdo como se llaman las funciones, pero es básicamente sustituir ciertos caracteres).

Como dices, aver si nos ilustran! jeje
  #4 (permalink)  
Antiguo 12/04/2012, 09:00
Avatar de zalito12  
Fecha de Ingreso: noviembre-2011
Ubicación: Coruña, España
Mensajes: 430
Antigüedad: 12 años, 5 meses
Puntos: 67
Respuesta: Seguridad en php

Hay varias para sql injection, mysql_real_escape_string(), addslashes(), etc
  #5 (permalink)  
Antiguo 12/04/2012, 09:18
Avatar de malakian  
Fecha de Ingreso: septiembre-2010
Ubicación: $malakian->Colombia();
Mensajes: 469
Antigüedad: 13 años, 6 meses
Puntos: 45
Respuesta: Seguridad en php

Bueno, tampoco soy un experto pero...

-Encriptar las claves en el cliente (javaScript) es una muy buena opción ya sea con SHA1 o MD5
-Usar SSL (https) brinda mayor seguridad ya que encripta la información
-Las peticiones AJAX que sean todas realizadas por el método POST
-también se puede oscurecer el servidor web
-usar urls amigables
__________________
Guitar Loco, Desarrollador Web PHP
Sigueme: @jose1x
  #6 (permalink)  
Antiguo 12/04/2012, 09:33
Avatar de zo0r  
Fecha de Ingreso: enero-2012
Ubicación: Miami, Florida.
Mensajes: 11
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Seguridad en php

Buenas, métodos GET y POST son el mismo perro con diferente collar para tratar de seguridad (véase Firebug, etc). Mejor preocuparse por la validación del lado del servidor, más bien utiliza GET o POST en conveniencia para mostrar datos sensibles del usuario en la URI o no, de lo contrario sería recomendable GET por temas de indexar, etc.

Con respecto a MySQL (SQL en general) un tip sería escapar símbolos como % (por cien) en sentencias LIKE (addcslashes()) entre otros, claro esto si no utilizas PDO.

La verdad has hecho una pregunta bastante extensa para como explicar en un post, te recomiendo Googlear más y sí hay bastantes artículos al respecto, pero en inglés.

Saludos.

Última edición por zo0r; 12/04/2012 a las 09:51
  #7 (permalink)  
Antiguo 12/04/2012, 12:25
 
Fecha de Ingreso: abril-2012
Ubicación: 41°37′00″N, 00°37′00″E
Mensajes: 462
Antigüedad: 12 años
Puntos: 33
Respuesta: Seguridad en php

zo0r: reconozco que el tema da para muchísimo, y tienes razón con lo del GET y POST (ambos se pueden modificar con chrome, por ejemplo), pero siempre prefiero el POST porque deja la url más "limpia" (a mi personalmente me gusta más).

Es por eso (que es extenso el tema) que preguntaba por libros, manuales, etc; porque se que nadie posteará la biblia en verso para explicarme TODO sobre seguridad en PHP... jeje

Es cierto también que cuento con experiencia previa en temas de seguridad (pero muy básicos), y aparte he visto varios manuales en google y demás...

gracias por el aporte, de todos modos c:
  #8 (permalink)  
Antiguo 12/04/2012, 18:24
Avatar de unreal4u  
Fecha de Ingreso: octubre-2008
Mensajes: 72
Antigüedad: 15 años, 5 meses
Puntos: 10
Respuesta: Seguridad en php

cuando empecé en la Web hace hartos años ya leí algo que nunca se me olvidó: ocupa GET para todo aquel URL que el usuario pueda volver a visitar sin tener que hacer ningún click adicional y ocupa POST para guardar los mismos actos que el usuario debe hacer en tu página.

En cuanto a seguridad... como no dices nada más lo más importante es:
Inyección SQL, prueba qué pasa si el usuario deliberadamente modifica el campo de ingreso de user (o cualquier otro formulario) para que en vez de:

Código:
SELECT * FROM users WHERE username = 'pedrito';
la consulta quede:
Código:
SELECT * FROM users WHERE username = ''; DELETE * FROM users; -- pedrito';
Esto en cualquier formulario donde el usuario tenga interacción, eso cuenta también los hidden.

EL segundo tema con el que se tiene bien poco cuidado es con XSS e inyección HTML. Es decir si el usuario elije como nombre de usuario:

Código:
" /><h1>Hola mundo!</h2>
Nada costará incluir un script desde otro lado, limpia eso tb.

Saludos.

Etiquetas: seguridad, sql, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 2 personas




La zona horaria es GMT -6. Ahora son las 13:16.