Tengo un sitio web (afición) que se ejecuta solo en SSL (es decir, HTTPS en todo el sitio). El sitio no se ocupa de las finanzas, los números de la seguridad social ni nada de ese nivel de importancia. Sin embargo, me gustaría asegurarlo tanto como sea razonablemente posible. Cuando un usuario inicia sesión, se escriben dos cookies: una cookie almacena la identificación del usuario y la segunda almacena una identificación de sesión. Las cookies están marcadas como Secure y HttpOnly.
Tengo un directorio donde me gustaría que todos los usuarios registrados puedan acceder a los archivos. Me parece que una forma de lograr esto es usar .htaccess en el directorio de claves para ver si hay una cookie de identificación de usuario válida: si es así, conceda acceso, pero si no, redirija a la página de inicio de sesión. De esta manera, no necesito seguir actualizando los valores legales de la cookie o tener una gran sobrecarga en el control de acceso.
Encontré el siguiente código para .htaccess:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_COOKIE} !^.*cookie-name.*$ [NC]
RewriteRule .* /login-error/set-cookie-first.html [NC,L]
y todo esto funciona bien: cuando inicie sesión como usuario registrado (es decir, cuando hay una cookie llamada cookie-name), obtengo acceso al directorio; cuando no haya iniciado sesión, me redireccionarán a la página de inicio de sesión.
Sin embargo, me pregunto: ¿Qué problemas de seguridad he pasado por alto? Por ejemplo, ¿es posible que un atacante cree una cookie con el nombre correcto en el navegador del atacante y luego haga que mi sistema piense que es una verdadera cookie?