Poner la información real en cookies, en lugar de solo almacenar una ID de sesión y mantener el resto del lado del servidor de información puede (pero no tiene que) ser problemático. Hay dos errores que desea evitar:
- Confiar en la información en la cookie sin validación del lado del servidor, por ejemplo. aceptando un precio total de $ 0.01 solo porque la cookie lo dice.
- Almacenar información confidencial en las cookies, por ejemplo, contraseñas o números de tarjetas de crédito.
Sin embargo, hay razones legítimas para almacenar cosas en las cookies. Podría imaginar que podría ser útil al implementar un carrito de compras y desea conservar el contenido durante las cargas de página sin tener que preocuparse por el servidor.
Entonces, para saber si hay una vulnerabilidad aquí, debe probar cuidadosamente la aplicación (tal como lo ha hecho). Intenta cambiar el precio. Intente ordenar un artículo que no debería poder ordenar. Trate de proporcionar basura aleatoria. Intenta falsificar descuentos que no deberías obtener. Trate de ordenar artículos no existentes para obtener el envío gratuito que solo obtiene al ordenar más de cinco artículos. Intente iniciar dos pedidos en diferentes navegadores y vea si puede secuestrar uno de ellos cambiando el ID de pedido del otro. Etc., etc., etc.
Algunas aplicaciones que dependen de las cookies para mantener un estado llenarán el formulario del lado del cliente con los datos de la cookie, y luego ese formulario se envía al servidor cuando se envía el pedido, por lo que el servidor nunca se molestará con la cookie. Si ese es el caso aquí, probablemente debería enfocar su prueba de lápiz en el formulario en lugar de la cookie.
Para escribir código de seguridad, deberá tratar los valores de las cookies con el mismo escepticismo que trata con cualquier entrada del usuario , aunque fue usted quien estableció los valores. Por lo tanto, deberá validar, hacer la autorización, calcular el precio correcto y así sucesivamente en el lado del servidor.
Entonces, para resumir, la respuesta es una firma "depende".