Uhmmm supongamos que cuando intentamos abrir una aplicación nos pide un típico cuadro de LOGIN, PASSWORD para loguearnos.
Supongamos que el código de la validación es algo como:
// Logging user outEsto nos indicaria que si no es posible validarse de la forma normal, podemos usar una cookie, que generalmente recuerda nuestra sesión y evita que nos logueemos cada vez que abrimos una página del mismo software. En dicho caso la COOKIE se llamaria ID.
if (isset($_GET['logout'])) {
$auth->doLogout();
}
else if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$msg = $auth->doLogin($_POST['email'], $_POST['password'], (isset($_POST['setCookie']) ? 'y' : null), false, $resume, $_POST['language']);
}
else if (isset($_COOKIE['ID'])) {
$msg = $auth->doLogin('', '', 'y', $_COOKIE['ID'], $resume); // Check if user has cookies set up. If so, log them in automatically
}
Supongamos que tenemos un código que valida la cookie:
En el caso hipotetico (patetico?), se validaria la cookie si existe con una función llamada verifyCookie.
if ($isCookie !== false) { // Cookie is set
$cookieValue = $isCookie;
if ( ($id = $this->verifyCookie($cookieValue)) !== false) {
$ok_user = $ok_pass = true;
}
Supongamos que esa función es algo como:
Eso me diria algo como que lo que viene en la cookie (ID), debe tener dos partes y la cookie completa deberia ser igual al resultado de la función generateCookie.
function verifyCookie($cookieValue)
{
$parts = explode('|', $cookieValue);
if (count($parts) != 2) {
return false;
}
$memberid = $parts[0];
if ( $cookieValue == $this->generateCookie($memberid) ) {
return $memberid;
}
else
{
return false;
}
}
Supongamos que la función generateCookie() tiene el siguiente código:
function generateCookie($memberid)Esto me diria que basado en el primer campo de la cookie voy a generar un MD5 de no se que y no se que, de un hash que obtuve con el usuario.
{
$passwordhash = $this->db->getPassword($memberid);
$cookiehash = md5($memberid . substr($passwordhash, 1, strlen($passwordhash) -5) );
return $memberid.'|'.$cookiehash;
}
¿ PERO SE VALIDA EL USUARIO?
Supongamos que el usuario no se valida, entonces la deducción me lleva a concluir que puedo generar una cookie a mi antojo que cumpla con lo que la función quiere ver.
Que tal si la COOKIE[ID] tiene un valor como:
Supongamos que usamos una herramienta para configurar esta cookie en nuestro navegador y luego entramos al sitio inicial donde nos piden el usuario y la clave.
Supongamos que nos logueamos sin necesidad de ingresar un usuario/clave validos.
Supongamos que ese software se llama: phpScheduleIt.
Supongamos que hay un dicho en la seguridad que dice:
"Cuando un usuario tenga la posibilidad de manipular los datos que ingresan a un sistema de validación y este no haga bien su trabajo, el usuario podrá hacer lo que quiera, puesto que la seguridad depende exclusivamente del conocimiento de ese usuario."
Este dicho, obviamente no existe, pero me gusta inventar.
Recomendación: Nunca, por ningun motivo permita que un usuario manipule mas de lo debido sus datos de entrada, y sobre todo nunca, pero nunca, dejen de soñar.
Post dedicado a [SU]KARITAS ;)
Supongamos que el usuario no se valida, entonces la deducción me lleva a concluir que puedo generar una cookie a mi antojo que cumpla con lo que la función quiere ver.
Que tal si la COOKIE[ID] tiene un valor como:
astrideliana|a1c6dbe433e08708f7f0e3e2c5a26fed
Supongamos que usamos una herramienta para configurar esta cookie en nuestro navegador y luego entramos al sitio inicial donde nos piden el usuario y la clave.
Supongamos que nos logueamos sin necesidad de ingresar un usuario/clave validos.
Supongamos que ese software se llama: phpScheduleIt.
Supongamos que hay un dicho en la seguridad que dice:
"Cuando un usuario tenga la posibilidad de manipular los datos que ingresan a un sistema de validación y este no haga bien su trabajo, el usuario podrá hacer lo que quiera, puesto que la seguridad depende exclusivamente del conocimiento de ese usuario."
Este dicho, obviamente no existe, pero me gusta inventar.
Recomendación: Nunca, por ningun motivo permita que un usuario manipule mas de lo debido sus datos de entrada, y sobre todo nunca, pero nunca, dejen de soñar.
Post dedicado a [SU]KARITAS ;)
3 comentarios:
Umm... en una palabra, Ataque Cross-Site Scripting???
nop, este tipo de ataques se llaman ataques de injection de cookies.
Lo que injectas es una cookie.
(injection a proposito)
Por qué está Astrid por ahí?, jajaja
Publicar un comentario