He leído que el marco de juego resuelve el problema de la fijación de la sesión al calcular la identificación de la sesión con la clave de la aplicación, pero ¿proporciona algún mecanismo para evitar el secuestro de la sesión o se deja esto al implementador?¡Juega! marco tiene algún mecanismo integrado para evitar el secuestro de la sesión?
Respuesta
La documentación del juego tiene una buena sección de seguridad, así que en lugar de duplicar, aquí hay un enlace - http://www.playframework.org/documentation/1.2.4/security.
Cubre
- XSS
- Inyección SQL
- La seguridad de sesión
- Cruz sitio de falsificación de petición
Algunos hay que aplicar a sí mismo, otros que no lo hacen.
Tu pregunta específica sobre el secuestro de sesión es automática.
La sesión es un hash de clave/valores, firmado pero no encriptado. Que significa que, mientras su secreto esté a salvo, no es posible que un tercero forje sesiones.
Gracias por la respuesta. Realmente no veo cómo el hash de los valores clave y el firmarlo contra la clave de la aplicación evita que alguien robe tu cookie y la use. Tal vez me estoy perdiendo algo? – marchaos
porque, si alguien lo manipula, no conoce el hash, por lo que el valor de hash no es válido, y Play sabe que la sesión se ha invalidado. – Codemwnci
¿Qué pasa si no lo alteran? Si olfateo tu cookie y no cambio ningún valor dentro de ella, seguramente ya que el hash aún es válido (suponiendo que esté almacenado en la cookie), puedo autenticar usando tus valores. – marchaos
No, no existe una forma integrada para evitar el secuestro de una sesión tan pronto como uno puede capturar la cookie de sesión (a través de sniffing/man en el medio). Hay algunas maneras de hacer más difícil , por ejemplo:
- usando sólo HTTPS
- establecer application.session.httpOnly en application.conf
Una approache para hacer más difícil es: - almacena el ip/user-agent/resolution/otras cosas o un hash de eso también en la sesión ... en tu controlador verifica si el usuario que accede a tu sitio todavía recrea el mismo hash ... el único problema real es con personas que están utilizando un proxy que, por ejemplo, cambia la ip sobre la marcha debido a la agrupación.
Un pequeño truco que podría tratar de usar: (sólo funciona en los navegadores recientes) Cuando un usuario se conecta, almacenar un poco de materia en un almacenamiento local de HTML5. Modifique sus llamadas Ajax para suministrar esta información desde el almacenamiento local. Si la información falta o no es válida, puede invalidar toda la sesión. Pero deberá asegurarse de que los controles solo se apliquen a las solicitudes de navegadores HTML5.
Espero que esto ayude un poco.
Almacenar el IP y el agente de usuario es una mala idea. Consulte http://stackoverflow.com/questions/969330/including-user-ip-addr-for-hash-cookie-value-bad-idea – marchaos
sus direcciones de enlace lo que dije con "el único problema real es con personas que están usando un proxy que, por ejemplo, cambia la ip sobre la marcha debido a la agrupación ". No hay nada en contra de almacenar un hash del agente de usuario, porque si eso cambia durante una sesión, la sesión fue secuestrada. Todo depende de la cantidad de energía que esté dispuesto a poner en esto y si realmente lo vale. Cambiar o eliminar datos confidenciales solo debería ser posible siempre a través de SSL y proporcionando una contraseña. –
- 1. Evitar el secuestro de sesión en ASP.NET
- 2. Secuestro de sesión y PHP
- 3. PHP Comprobando el agente de usuario y el IP para evitar el secuestro de la sesión
- 4. ¿Secuestro o ataque de sesión?
- 5. Protección de secuestro de sesión en ASP.NET
- 6. ¿Existe un mecanismo integrado para la intercambiabilidad Miles/KM para iPhone?
- 7. ¿Qué mecanismo integrado tiene SQL Server para hacer consultas de retroceso?
- 8. ¿Log4j proporciona algún mecanismo para el registro diario de archivos?
- 9. ¿Alfresco Share proporciona algún mecanismo para la comunicación Inter Dashlet?
- 10. Tiene HSQLDB algún mecanismo para guardar datos en memoria en un archivo?
- 11. ¿El popular marco de código abierto AFNetworking tiene un mecanismo para registrar solicitudes/respuestas a la consola?
- 12. ¿Hay algún mecanismo de enlace de datos disponible para iOS?
- 13. ¿Tiene PHP un mecanismo integrado para conmutar por error de un servidor de base de datos a otro?
- 14. marcos de registro para Linux integrado?
- 15. ¿Hay algún marco de librería ORM conveniente para c?
- 16. Problema de secuestro de sesión inadvertido con autenticación reposada
- 17. Secuestro de sesiones en la práctica
- 18. ¿Hay algún marco estándar para php?
- 19. ¿Hay algún beneficio de seguridad en el cifrado de las variables de sesión?
- 20. Cuál es el mejor mecanismo para almacenar la configuración de autenticación en una aplicación de WinForms
- 21. ¿Hay algún tipo de mecanismo de transacción del sistema de archivos disponible para la aplicación .net?
- 22. Utilizando el mecanismo de serialización/deserialización de RPC integrado en GWT
- 23. ¿Scalatest tiene algún soporte para suposiciones?
- 24. Secuestro de conexión TCP
- 25. ¿.NET tiene un IEnumerable integrado para múltiples colecciones?
- 26. ¿Hay algún mecanismo mutex/semáforo en los scripts de shell?
- 27. Cómo enviar de forma segura un puntaje alto en un juego de front-end para evitar el secuestro posterior
- 28. ¿Tiene algún complemento recomendado para Netbeans?
- 29. Cómo evitar el tiempo de espera de la sesión
- 30. Cómo evitar una sesión
Hasta ahora tengo un sí y un no, por lo que obviamente hay información contradictoria aquí. – marchaos
Todavía siento que esta pregunta no ha sido respondida, pero desafortunadamente tengo que otorgar la recompensa en cualquier caso. Si alguien pudiera responder con una respuesta definitiva, sería genial. – marchaos