Foros del Web » Programando para Internet » PHP »

seguridad

Estas en el tema de seguridad en el foro de PHP en Foros del Web. Hola siempre e tenido la duda bueno mi sitio esta hecho completamente con php tengo un sistema de usuario con sus respectivas sesiones dependiendo si ...
  #1 (permalink)  
Antiguo 02/09/2011, 17:26
Avatar de xlos_mas_pro  
Fecha de Ingreso: mayo-2011
Ubicación: Santiago
Mensajes: 359
Antigüedad: 13 años, 6 meses
Puntos: 11
Pregunta seguridad

Hola siempre e tenido la duda bueno mi sitio esta hecho completamente con php tengo un sistema de usuario con sus respectivas sesiones dependiendo si es administrador moderador o usuario normal
pero tengo dudas respecto a la seguridad queria saber si es qe alguien podria sacar las contraseñas de mis usuarios o si alguna persona podria ponerse como administrador hay algun tipo de codigo para proteger contraseñas o algo haci en realidad es solo por curiosidad pero es por que tuve viendo un sistema de login el cual es muy parecido al mio y alguien le comenta que esta malo por que no protege las contraseñas de los usuarios mediante mkdir o algo haci pero no se como se hace por favor alguien seria tan amable de explicarme como es respecto a la seguridad en php
  #2 (permalink)  
Antiguo 02/09/2011, 17:38
Avatar de PanKrdo  
Fecha de Ingreso: julio-2007
Ubicación: Veracruz
Mensajes: 46
Antigüedad: 17 años, 4 meses
Puntos: 2
Respuesta: seguridad

usa md5 aunque despues no podras invertir la encriptacion o haste una funcion que te permita encriptar y desencriptar
  #3 (permalink)  
Antiguo 02/09/2011, 19:31
Avatar de hasdpk  
Fecha de Ingreso: agosto-2011
Ubicación: $spain->city( 'Arucas' );
Mensajes: 1.800
Antigüedad: 13 años, 2 meses
Puntos: 297
Respuesta: seguridad

Yo siempre encripto las contraseñas de mis usuarios en SHA1 y en realidad nunca te hace falta desencriptar las contraseñas, simplemente tienes que compararlas ya encriptadas. Pero de todas formas esa no es tu pregunta.

Puedes mirarte en relación a seguridad esto:
SQL Injection - http://es.wikipedia.org/wiki/Inyección_SQL
XSS - http://es.wikipedia.org/wiki/XSS

Estaría también interesante que colgaras aquí el enlace a tu web y nosotros mirar si se le pueden hacer esos dos ataques y darte soluciones específicas.
  #4 (permalink)  
Antiguo 02/09/2011, 19:59
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: seguridad

Solo con MD5 o SHA1 la protección seria algo débil, quedaría expuesto a un ataque a través de rainbow tables, seria mejor un doble hash + salt, algo así:

Código PHP:
Ver original
  1. $salt = '$#cr{B}owf!sh';
  2. $hash = sha1(md5($pass) . $salt);

Y habría que tener en cuenta también la ubicacion del servidor de bbdd, si esta en otro servidor y la conexión no es segura se podría obtener el hash, en esta caso seria mejor buscar el usuario y luego comparar el password.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #5 (permalink)  
Antiguo 02/09/2011, 20:06
Avatar de mcun  
Fecha de Ingreso: octubre-2010
Ubicación: tras la pantalla
Mensajes: 466
Antigüedad: 14 años, 1 mes
Puntos: 55
Respuesta: seguridad

Creo que el tema no se redice solo a encriptar las contraseñas ... hay muchos tipos de ataques que pueden ser peligrosos

https://www.owasp.org/index.php/Cate...op_Ten_Project esa es una organización que trata de realizar un standar para la creación de aplicaciones web seguras esa es el top ten de las 10 vulnerabilidades mas comunes y peligrosas.. también tienen unas guías de programación segura y un sin fin de recursos mas .. son todos gratuitos y de licencia libre


estudia-lo con clama que hay mucho XD
  #6 (permalink)  
Antiguo 03/09/2011, 00:56
 
Fecha de Ingreso: noviembre-2009
Mensajes: 226
Antigüedad: 15 años
Puntos: 19
Respuesta: seguridad

Cita:
Iniciado por masterpuppet Ver Mensaje
Solo con MD5 o SHA1 la protección seria algo débil, quedaría expuesto a un ataque a través de rainbow tables, seria mejor un doble hash + salt, algo así:

Código PHP:
Ver original
  1. $salt = '$#cr{B}owf!sh';
  2. $hash = sha1(md5($pass) . $salt);

Y habría que tener en cuenta también la ubicacion del servidor de bbdd, si esta en otro servidor y la conexión no es segura se podría obtener el hash, en esta caso seria mejor buscar el usuario y luego comparar el password.

Saludos.
Te equivocas.

Lo del salt es completamente correcto. Un MD5 o un SHA1 (podemos extenderlo a cualquier algoritmo) no es realmente seguro si no se emplea un salt pseudo-aleatorio que permita modificar el contenido de la contraseña, evitando de una forma más eficaz posibles ataques por fuerza bruta (que funcionan muy bien con MD5, dado que es demasiado utlizado).

Pero lo que no es correcto es decir que lo mejor es hacer md5(sha1(.......)))))))). Eso es incorrecto. ¿Porqué? Pues porque las propiedades matemáticas que hacen que esos algoritmos tengan pocas colisiones hash cercanas (dado que colisiones hay siempre infinitas) se pierden al combinarse, por lo que la posibilidad de ataques por fuerza bruta es mucho mayor.

Un saludo!
__________________
Mi blog: magdkudama.com

Mi clase de validación de datos: magdkudama.com/validation
  #7 (permalink)  
Antiguo 03/09/2011, 01:05
 
Fecha de Ingreso: noviembre-2009
Mensajes: 226
Antigüedad: 15 años
Puntos: 19
Respuesta: seguridad

Cita:
Iniciado por hasdpk Ver Mensaje
Yo siempre encripto las contraseñas de mis usuarios en SHA1 y en realidad nunca te hace falta desencriptar las contraseñas, simplemente tienes que compararlas ya encriptadas. Pero de todas formas esa no es tu pregunta.

Puedes mirarte en relación a seguridad esto:
SQL Injection - http://es.wikipedia.org/wiki/Inyección_SQL
XSS - http://es.wikipedia.org/wiki/XSS

Estaría también interesante que colgaras aquí el enlace a tu web y nosotros mirar si se le pueden hacer esos dos ataques y darte soluciones específicas.
Buenas,

Bueno, nunca no puede ser la palabra. Dependiendo de qué necesites, puede que un algoritmo unidireccional no sea la solución. Por ejemplo, si tienes un sistema de recuperación de contraseña, y no quieres enviarle una provisional, sino su contraseña (no digo que lo vea bien, pero se hace)...

Para ello, necesitas un algoritmo bidireccional (AES, por ejemplo), que con una buena clave de cifrado, es mucho más seguro que MD5 o SHA1.

Un saludo!
__________________
Mi blog: magdkudama.com

Mi clase de validación de datos: magdkudama.com/validation
  #8 (permalink)  
Antiguo 03/09/2011, 04:00
 
Fecha de Ingreso: noviembre-2009
Mensajes: 226
Antigüedad: 15 años
Puntos: 19
Respuesta: seguridad

Cita:
Iniciado por xlos_mas_pro Ver Mensaje
Hola siempre e tenido la duda bueno mi sitio esta hecho completamente con php tengo un sistema de usuario con sus respectivas sesiones dependiendo si es administrador moderador o usuario normal
pero tengo dudas respecto a la seguridad queria saber si es qe alguien podria sacar las contraseñas de mis usuarios o si alguna persona podria ponerse como administrador hay algun tipo de codigo para proteger contraseñas o algo haci en realidad es solo por curiosidad pero es por que tuve viendo un sistema de login el cual es muy parecido al mio y alguien le comenta que esta malo por que no protege las contraseñas de los usuarios mediante mkdir o algo haci pero no se como se hace por favor alguien seria tan amable de explicarme como es respecto a la seguridad en php
Realmente la seguridad PHP es un mundo... Podrías mostrar tu página de login, e intentaríamos ayudarte, indicando si es segura o no.

También podrías explicar cómo proteges las páginas, si haces un control por REFERER, IP, variables de sesión, si regeneras el ID de sesión, tokens entre páginas....

Deberías ser más específico en lo que pides.

Un saludo
__________________
Mi blog: magdkudama.com

Mi clase de validación de datos: magdkudama.com/validation
  #9 (permalink)  
Antiguo 03/09/2011, 09:22
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: seguridad

Cita:
Iniciado por GrupoC Ver Mensaje
Te equivocas.

Lo del salt es completamente correcto. Un MD5 o un SHA1 (podemos extenderlo a cualquier algoritmo) no es realmente seguro si no se emplea un salt pseudo-aleatorio que permita modificar el contenido de la contraseña, evitando de una forma más eficaz posibles ataques por fuerza bruta (que funcionan muy bien con MD5, dado que es demasiado utlizado).

Pero lo que no es correcto es decir que lo mejor es hacer md5(sha1(.......)))))))). Eso es incorrecto. ¿Porqué? Pues porque las propiedades matemáticas que hacen que esos algoritmos tengan pocas colisiones hash cercanas (dado que colisiones hay siempre infinitas) se pierden al combinarse, por lo que la posibilidad de ataques por fuerza bruta es mucho mayor.

Un saludo!
Esa afirmación siempre la he visto cuando se utiliza el mismo algoritmo, pero tu estas diciendo que si hasheo con un algoritmo y le aplico salt, aumento las posibilidades de colisión en otro algoritmo ?, seria interesante que postearas alguna referencia.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #10 (permalink)  
Antiguo 03/09/2011, 18:29
Avatar de xlos_mas_pro  
Fecha de Ingreso: mayo-2011
Ubicación: Santiago
Mensajes: 359
Antigüedad: 13 años, 6 meses
Puntos: 11
Respuesta: seguridad

Bueno en realidad yo no protego con nada las contraseñas de mis usuarios es solo un sistema normal de usuario el cual esta debidido en sesiones con un array y ese array se llama admin entonses que hago en el array pongo los nombres de los admin y luego hago que si el nombre escrito en el campo es igual a uno de los array entonses me cree una sesion administrador y si no una session de usuario normal por eso es que nesesito proteger contraseñas por que los administradore smanejan casi todo el sitio e imaginen si alguien mal intencionado capta una de las contraseñas de mis admin y me deja la media caga en mi sitio pero lo que si protejo son las paginas lo hago de la siguiente manera
Cita:
<?php
session_start(); ?>
<?php
if(isset($_SESSION['admin'])){
echo "";
}elseif(isset($_SESSION['usu'])){
echo "";
}else{
header('Window-target: _parent');
header('Location: http://mundosic.com/error.php');
}
ojalas que alguien me pueda ayudar a proteger las contraseñas de mis usuarios por que en realidad nunca e usado un md5 y si alguien me dijiera como lo puedo insertar por favor se lo agradeseria

Etiquetas: seguridad, 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




La zona horaria es GMT -6. Ahora son las 12:15.