Comunidad de diseño web y desarrollo en internet online

Seguridad, sesiónes de PHP? envio de claves?

Citar            
MensajeEscrito el 10 Abr 2008 07:25 pm
Hola

Tengo un proyecto en el que el front-end es en flash/flex y el backend en PHP (amfPHP). En problema es que estará enfocado tanto a dispositivos móviles como al escritorio y tengo dudas en cuanto a cómo manejar la seguridad de cara al usuario.

Hasta ahora, para cosas más o menos simples creaba una llave_temporal en cada login, luego enviaba el usuario y la llave temporal en cada acción que realizaba en el servidor. Con esto evitaba que se molestasen dos personas haciendo cambios (usando la misma cuenta!), por ejemplo alguien se conecta desde un PC y se pone a modificar una noticia, tarda mucho y otra persona entra desde otro pc y la modifica antes, entonces la primera persona no podría terminar de modificarla porque la llave temporal ya no tendría validez (es un ejemplo malo, pero lo mismo sirve).

Ahora digamos que me pongo a ver mi cuenta desde el móvil, y luego desde el pc, y vuelta al móvil... perdería la llave temporal y tendría que volver a "entrar al sistema".

Ahora no sé qué hacer realmente, no sé si usar sesiones o qué hacer, porque enviar el usuario y clave en todas las conexiones me da un poco de mal rollo. Por otro lado no puedo pedir únicamente el usuario, porque lo que se quiere es facilitar parte de la API al público, por ejemplo

getUsersPhotos(usuario);

pero si el usuario tuviera fotos privadas que sólo pudiera ver él

getMyPhotos(usuario);
pero alguien podría "hackear" la API y obtener las fotos privadas de otros usuarios

Así que no sé si iniciar una sesión o hacer las conexiones de la forma
getMyPhotos(usuario,password);


¿alguna idea?

Por _CONEJO

BOFH

7639 de clabLevel

17 tutoriales
21 articulos

 

firefox
Citar            
MensajeEscrito el 10 Abr 2008 07:37 pm
Porque no usar alguna especie de llave de autorización como las claves RSA para el SSH. Generas una clave de autorización para la máquina y así no tenes que estar solicitando tantos datos, podría ser una cookie o algo parecido.

Por Odin

Claber

639 de clabLevel

2 tutoriales

Genero:Masculino   Premio_Secretos

El valle de las hamacas

firefox
Citar            
MensajeEscrito el 10 Abr 2008 07:40 pm
el problema es que se queire que el sistema sea accesible desde cualquier lado por tanto la idea es que estés donde estés, y conectándote con lo que quieras (pda, móvil, pc,...) puedas acceder a tu cuenta... por eso no creo que sea bueno una clave de hardware ...

Por _CONEJO

BOFH

7639 de clabLevel

17 tutoriales
21 articulos

 

firefox
Citar            
MensajeEscrito el 10 Abr 2008 07:51 pm
Y si creas una especie de sesión en espera? Tomando tu ejemplo de que estas conectado con la PDA, luego pasas al PC y luego queres regresar a la PDA sin tener que volver a ingresar los datos, podríamos hacer que la sesion de la PDA pase a una lista de espera, y que la sesion principal se vuelva la de la PC ( la nueva ).

Luego al cerrar la sesión del PC el control se devuelve a la PDA, y se pone en una sección del administrador algo que diga sesiones en espera, en caso de que hallas dejado una en espera en un dispositivo al que no vas a accesar ya y se ciera el acceso desde el panel.

También podrías crear un especie de lock para que la sesión no ceda el control a una más nueva cuando sabes que vas a pasar mucho tiempo en ella.

Por Odin

Claber

639 de clabLevel

2 tutoriales

Genero:Masculino   Premio_Secretos

El valle de las hamacas

firefox
Citar            
MensajeEscrito el 10 Abr 2008 09:06 pm
¿Por qué reinventar el hilo negro?

Esa llave temporal es buena como AddOn _Conejo, pero esa es igual de hackeable que si solo mandarás el usuario. Cuando quieres que nadie vea lo que el usuario la manda por la red al servidor, se usa ssl. Este protocolo es el que se usa en transacciones bancarias, transferencias de dinero y otras cosas seguras, y hasta ahora nadie ha podido con él(siempre y cuando el server tengan un buen certificado de seguridad).

Usa SSL y listo. :wink:

Además la vulenerabilidad de que te tomen tu tráfico de red, que es la unica razón en que verían tu usuario que mandas, es por un sniffer, el que tenga un sniffer no solo lo joderán en tu aplicación, lo joderán en todo, cuentas bancarias, mail, loquesea.com.

Saludos

Por Dano

BOFH

4273 de clabLevel

14 tutoriales
4 articulos
10 ejemplos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Lugar estratégico para vigilarte

firefox
Citar            
MensajeEscrito el 11 Abr 2008 02:44 pm
y porque no manejas sessiones independientes para cada cuenta, y encaso que otra persona ingrese con la misma cuenta, la session inicial sea cerrada

Por jpcw

Claber

1715 de clabLevel

1 tutorial

Genero:Masculino  

AlgoritmicBrainDesigner

firefox
Citar            
MensajeEscrito el 11 Abr 2008 03:00 pm
ummm no creo que sea necesario SSL, no hablamos de datos personales ni bancarios ni nada parecido. Hablamos por ejemplo de una cuenta con varios servicios por ejemplo fotos o enlaces en favoritos, lo que busco es una manera relativamente segura de transportar los datos.

La cosa es que si cogen la llave temporal sólo es válida hasta que vuelvan a entrar y así la contraseña sólo se transmite en el handshake inicial...

No sé, quería algo medio seguro, al igual que me estoy informando sobre evitar inyecciones de SQL (hasta ahora hacía un chequeo básico de ' , " y demás, pero no sé si hay algo más) y demás cosas, que no quiero joderla ya que la app es abierta al "público masivo".

pero gracias por sus consejos ^____^

Por _CONEJO

BOFH

7639 de clabLevel

17 tutoriales
21 articulos

 

firefox
Citar            
MensajeEscrito el 11 Abr 2008 04:29 pm

_CONEJO escribió:


No sé, quería algo medio seguro, al igual que me estoy informando sobre evitar inyecciones de SQL (hasta ahora hacía un chequeo básico de ' , " y demás, pero no sé si hay algo más) y demás cosas, que no quiero joderla ya que la app es abierta al "público masivo".

pero gracias por sus consejos ^____^


bueno de sql injection no solo debes de revisar si llevan ' o ", hay otro tipo de ataques
Por ejemplo si lo que te llega no es una cadena si no algun numero de id, para ser usado de forma
posting.php?id=1234 puede ser suceptible aataques del tipo posting.php?id= 0 UNION ALL ...
o si tomas datos de una cookie para usarlos en sentencias sql, y no filtras lo que pudiera estar en la misma, esta pudiera ser suceptible a ataques tipo %2527
Desde luego esos son ataques a html + php, no se si igual apliquen a amfphp

Supongo que muchas de esas cosas ya las sabes, pero igual date una vuelta por http://phpsec.org/ a ver que más se te puede ocurrir.

Saludos.

Por rolv

Claber

2000 de clabLevel

3 tutoriales

 

firefox
Citar            
MensajeEscrito el 12 Abr 2008 12:52 am
La cosa es que si cogen la llave temporal sólo es válida hasta que vuelvan a entrar y así la contraseña sólo se transmite en el handshake inicial...


El punto es que si tiene la posibilidad de agarrarte el usuario o la llave, igual tendrán la posibilidad de tomar la contraseña. Como digo si te interceptan el tráfico, te interceptan todo, no solo una partecita o a veces.

Saludos

Por Dano

BOFH

4273 de clabLevel

14 tutoriales
4 articulos
10 ejemplos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Lugar estratégico para vigilarte

firefox
Citar            
MensajeEscrito el 12 Abr 2008 06:46 am
Me apunto la dirección de phpsec.

Dano, si, pero es como WEP vs. WPA ... en WEP en cada paquete se añaden la clave cifrada, en WPA sólo en el handshake inicial, lo que lo hace algo más seguro (reduce las probabilidades de conseguir la contraseña al enviarla sólo una vez y no varias).


De todas formas aún no tengo las cosas claras en cuanto a qué hacer ... xDD

Por _CONEJO

BOFH

7639 de clabLevel

17 tutoriales
21 articulos

 

firefox
Citar            
MensajeEscrito el 13 Abr 2008 02:24 am
no entiendo que tiene que ver el dispositivo que se use para conectarse a tu web(pc, mac, iPhone, celular barato o ultramoderno reloj casio) con lo que programas del lado del servidor. a mi parecer usa session, si quieres evitar inyaccion de sql y otros temas de seguridad usa los metodos estándar regidos por el sentido común de que el cracker no usa tu web para mandar variables.

Por Inyaka

Claber

3176 de clabLevel

9 tutoriales
2 articulos

Genero:Masculino   Desarrollador de GAIA

Programador y fotógrafo

firefox
Citar            
MensajeEscrito el 13 Abr 2008 07:29 am

Inyaka escribió:

no entiendo que tiene que ver el dispositivo que se use para conectarse a tu web(pc, mac, iPhone, celular barato o ultramoderno reloj casio) con lo que programas del lado del servidor. a mi parecer usa session, si quieres evitar inyaccion de sql y otros temas de seguridad usa los metodos estándar regidos por el sentido común de que el cracker no usa tu web para mandar variables.



Pues una conexión ADSL de pc es rápida, una 3g de móvil no tanto, además de que suelen ser caras, por lo que no iría navegando al tuntún, lo mismo pasa mucho tiempo entre llamada y llamada al servidor y caduca la sesión

Por _CONEJO

BOFH

7639 de clabLevel

17 tutoriales
21 articulos

 

firefox
Citar            
MensajeEscrito el 13 Abr 2008 06:51 pm
entonces conviene tener la mayor cantidad de datos posibles en un xml y en lo posible tener una interfaz asincronica ¿has pensado en poder guardar cookies encriptadas(opcionales) para solucionar el problema del caducamiento de las sessiones ?

Por Inyaka

Claber

3176 de clabLevel

9 tutoriales
2 articulos

Genero:Masculino   Desarrollador de GAIA

Programador y fotógrafo

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.