¿A qué ataques de seguridad está abierto mi sistema de carrito simple?

1

Estoy armando un sitio simple con un proceso de pago básico. Estoy usando laravel 5.2. Cuando un usuario realiza una visita, las aplicaciones verifican si una cookie está sembrada con un ID de hash de cookie: el hash tiene una longitud de 70 caracteres. Si hay una cookie, se busca el hash del carrito en la base de datos y, si se encuentra, se extrae para el usuario. Si el hash no existe, la cookie se elimina.

Si no existe una cookie, se crea un nuevo carrito, se almacena en la base de datos y el hash se almacena en una cookie.

Un carrito contiene una matriz de cart products . Un producto de carrito contiene un hash único.

Los productos del carrito se agregan al carrito a través de una ruta, que contiene la identificación del producto, y los productos se eliminan del carrito mediante una ruta que contiene el hash del elemento del carrito.

Esto está actualmente en un dominio no ssl.

¿Esta parte básica del sistema está abierta a ataques que deberían preocuparme?

    
pregunta user3791372 19.08.2016 - 13:57
fuente

1 respuesta

1

Como los comentaristas han señalado, usted tiene que hacer un trabajo esencial (mover todo a HTTPS, hacer que las cookies sean seguras y probablemente también HttpOnly, etc.) y debe evitar reinventar la rueda si es posible. Además, corre el riesgo de sufrir todo tipo de vulnerabilidades de seguridad de aplicaciones web estándar (secuencias de comandos entre sitios, falsificación de solicitudes entre sitios, control de clics, eliminación de SSL, etc.); tendrás que tener cuidado de ellos.

Algunos problemas específicos que saltan sobre mí al leer tu descripción:

  • inyección SQL. Si está buscando el valor de cookie en una base de datos, ese es un vector de inyección obvio. Use consultas parametrizadas / procedimientos almacenados, o al menos asegúrese de validar el contenido de la cocinera antes de revisar la base de datos (no confíe en la desinfección / escape de la cookie; es mejor simplemente dejarla en el suelo si está formada de forma ligeramente incorrecta) ).
  • Predicción de token. Describe el valor de la cookie como un hash (aunque no conozco ninguna función de hash con un resumen de 70 caracteres incluso en codificación hexadecimal); que hash ¿Es algo que un atacante podría predecir, como una combinación de valores constantes y tal vez un valor de ID de aumento secuencial o similar? Si dos personas tienen las mismas cosas en su carrito, ¿son iguales los valores de sus cookies? Si no, ¿qué los distingue?
  • Fijación de sesión / plantación de cookies. Si se usan cookies para identificar los carros (en lugar de los usuarios con métodos de pago), un atacante podría intentar agregar elementos que el atacante está vendiendo a los carros de otras personas, al averiguar cuál es el hash para (por ejemplo) un carro con 10 Ataques. en él está, y luego poner esa cookie en tantos usuarios como sea posible. Algunos de ellos pueden hacer su compra sin mirar de cerca lo que están comprando, lo que hace que gasten demasiado y le den el extra (a través de su tienda) al atacante.

Lamentablemente, las aplicaciones web son muy fáciles de equivocar. Los lenguajes como PHP facilitan el desarrollo de una aplicación web, pero no ayudan a protegerla (de hecho, el lenguaje PHP es conocido por todas las aplicaciones web inseguras escritas por personas que piensan que aprender PHP significa que saben todo lo que necesitan sobre cómo escribir web). aplicaciones). Es bueno para usted pensar en la seguridad en este momento, pero necesita mucho más que tener la lógica empresarial básica a salvo.

    
respondido por el CBHacking 20.08.2016 - 07:15
fuente

Lea otras preguntas en las etiquetas