Hemos creado un sitio web impulsado por una base de datos utilizando PHP con cookies establecidas y ahora necesitamos evitar el spoofing HTTP, ¿alguna idea sobre cómo hacer esto? somos principiantes con esto por lo que cualquier ayuda sería muy útil¿Cómo prevenir el spoofing HTTP?
Respuesta
No se pueden "falsificar" las solicitudes HTTP. Envía una solicitud al servidor y el servidor responde de manera adecuada.
Creo que lo que intenta evitar es la suplantación de cookies. Teniendo en cuenta que las cookies se almacenan en el lado del cliente, no hay nada que pueda hacer para evitar que los usuarios modifiquen sus contenidos.
No almacene información confidencial en sus cookies. No son seguros y el cliente los lee y modifica fácilmente.
Use las sesiones de PHP en su lugar. La explicación completa sobre cómo funcionan las sesiones y cómo mantenerlas seguras se puede leer en one of my previous answers.
Esencialmente, asegurando sesiones se realiza en dos frentes:
Prevención de fijación de sesión
Regenerar una nuevasession_id
cada X número de solicitudes con el fin de reducir la cantidad de tiempo que un atacante tiene que robar La identificación.identificar de forma única el cliente
Uso del IP y/o el agente de usuario para identificar el cliente y comprobar que el valor de cada carga de página contra los que están almacenados en la sesión. Esta es realmente la única opción que tiene para identificar al cliente de manera única.
Incluso con que, en su lugar, no hay solución a toda prueba y una vez que su session_id
se ve comprometida, que son más o menos acabado.
De nuevo, para una explicación detallada, por favor vea my previous answer.
Spoofing de qué? HTTP es solo un protocolo para transferir datos, en realidad no es algo que se pueda falsificar.
Lo que hay que hacer no es evitar la falsificación de información, sino simplemente no confiar nunca en el cliente. En términos de cookies, almacene un valor pseudoaleatorio hash que compare con la base de datos antes de aceptar los datos de la cookie.
ACTUALIZADO:
dado que es específicamente las cookies que usted está preocupado, voy a ir un poco más en profundidad. Hay dos cosas principales de las cuales preocuparse cuando almacena cookies.
- No almacene los datos reales
- Validar contra la base de datos
Así que digamos que usted quiere tener un sitio con los usuarios donde se almacenan los datos personales. En la cookie, puede almacenar el nombre de usuario o ID de usuario y un token de seguridad hash que también se almacena en la base de datos cuando el usuario inicia sesión. El token de seguridad no se conocerá y cambiará con cada inicio de sesión. Cualquier información personal permanece en la base de datos, nunca en la cookie.
leer un poco más sobre las mejores prácticas: http://jaspan.com/improved_persistent_login_cookie_best_practice
tenemos que detectar intentos de falsificación de mensajes HTTP si eso ayuda? – Jermain
Quizás podría describir un ejemplo específico de lo que cree que podría suceder. –
Si alguien descubre la cookie que PHP usa para administrar una sesión, ¿qué significa detener a alguien en una máquina diferente configurando manualmente la cookie con el mismo valor y haciéndose pasar por usted? – Jermain
Si desea evitar que man-in-the-middle espionaje, es posible que desee utilizar HTTPS, que crea un canal seguro a través de la red, a condición de que los conjuntos de cifrado adecuados se usan y que el certificado del servidor es verified and trusted.
Nota: La pregunta original era ambigua. Ahora está claro que la pregunta es sobre la suplantación de cookies.
Spoofing? El único problema real con una identidad comprometida es el robo de cookies.
Lo que podría hacer es, siempre que se envíe una cookie a través de los encabezados HTTP, verificar esto con la dirección IP a la que se emitió. Por ejemplo:
<?php
session_start();
$rec = db_query('select count(*), ip from session where session_id = "' . session_id() . '"');
list ($last_count, $last_ip) = $rec[0];
if (! $last_count) {
# add it into the database
db_query('insert into session (session_id, ip) values (' .
'"' . session_id() . '", ' .
'"' . $_SERVER['REMOTE_ADDR'] . '"' .
')');
} else {
if ($last_ip != $_SERVER['REMOTE_ADDR']) {
print "user has stolen a cookie!";
}
}
?>
Pero esto puede tener un efecto negativo en las personas cuyo ISP les emite una dirección IP dinámica.
, no estoy seguro de cuán útil es este "consejo". Esto no solo atrapa aquellos con una dirección IP dinámica sino también aquellos que usan un dispositivo móvil como una computadora portátil. Pasar de una oficina a otra puede ser suficiente para que el código los identifique como cookies. No recomiendo este. – T9b
Sé que esto ha sido respondido, pero quiero agregar otra técnica que utilizo, es particularmente útil para los inicios de sesión de administración. Use sesiones como de costumbre pero agregue protección de directorio a la mezcla.
De esta forma, si una sesión es secuestrada, el secuestrador también debe poder obtener el inicio de sesión en el directorio.
Utilizo esta técnica para la administración del foro. ciertos foros se piratean fácilmente y esto reduce la posibilidad de que un hacker entre y cause problemas graves.
DC
- 1. Spoofing Datos HTTP Referrer usando ASP.NET
- 2. Cómo prevenir HTTP 304 en el servidor de prueba Django
- 3. ¿Cómo configurar IP spoofing en jmeter?
- 4. Cómo prevenir el evento ListBox.SelectedIndexChanged?
- 5. Desactivación de verificación IP spoofing en Rails 3 aplicación
- 6. ¿Cómo prevenir el envío del formulario?
- 7. Jackson: cómo prevenir el campo de serialización
- 8. ¿Cómo prevenir el desbordamiento del búfer memcpy?
- 9. Cómo prevenir el restablecimiento del formulario HTML
- 10. ¿Cómo prevenir el abandono de vim accidentalmente?
- 11. Solicitar página web en C# spoofing the Host
- 12. Sniffing de parámetros (o Spoofing) en SQL Server
- 13. ¿Cómo prevenir el secuestro de sesiones de tomcat?
- 14. prevenir el comportamiento de anclaje
- 15. Prevenir el acercamiento de Phonegap + JQuery Mobile
- 16. Cómo prevenir la redefinición macro
- 17. ¿Cómo prevenir el almacenamiento en caché en Internet Explorer 9 a través de los encabezados de respuesta http en Java?
- 18. ¿Cómo prevenir CSRF en una aplicación RESTful?
- 19. Prevenir javascript onclick el elemento hijo
- 20. Prevenir el conflicto de tuberías con nombre
- 21. Prevenir automáticamente aplicaciones comenzando desde el iniciador
- 22. ¿Cómo prevenir el retraso de desplazamiento en Safari Mobile (iPad)?
- 23. Cómo prevenir el servidor SQL trabajos se ejecuten simultáneamente
- 24. ¿Cómo prevenir el código jQuery de demasiadas funciones de anidamiento?
- 25. IOS5: ¿Cómo prevenir una excepción para el método rectForRowAtIndexPath
- 26. ¿Cómo prevenir el error de redondeo en C++?
- 27. ¿Cómo prevenir el cierre de la ventana del navegador?
- 28. Cómo prevenir el escape automático de caracteres especiales en Python
- 29. ¿Cómo prevenir el ataque DoS en aplicaciones ASP.NET MVC?
- 30. ¿Cómo prevenir el cierre automático de las llaves en ReSharper?
¿cuál es la URL? –
se está cargando una vez que hemos completado los problemas de seguridad – Jermain