¿Es suficiente asegurar una página de estado del pedido solo con una URL aleatoria?

11

Después de que un cliente (corporativo) compró algunos artículos en nuestra tienda en línea, le enviamos un correo electrónico con una descripción general de lo que le ha comprado.

Nos gustaría informar a nuestros clientes sobre los pagos recibidos, el seguimiento de paquetes, etc. Resolvería esto asignando a cada pedido un ID aleatorio y agregaría un enlace a cada correo. El enlace puede ser así: http://shop.foo.bar/order/rwklvc46g9wt7kvy09f1

¿Tomaría medidas adicionales para proteger los datos? ¿O elegir una solución completamente diferente?

Ventajas:

  • no hay actualizaciones de estado annyoing por correo (especialmente si ocurren actualizaciones frecuentes)
  • fuente de información única (nunca desactualizada)
  • compartible (por ejemplo, a su jefe o colegas)

Desventajas

  • datos privados expuestos en un sitio web de acceso público (por ejemplo, números de teléfono, detalles de pago)
Dan Elpat
fuente
44
Hola Dan, bienvenido a los webmasters. Parece que has creado dos usuarios idénticos (?) Y has editado tu pregunta con el otro "Dan", debido a esto está en una cola en espera de aprobación. El usuario que hace la pregunta siempre puede editar sus propias preguntas libremente y hacer comentarios sobre las respuestas, etc. El otro "Dan" no tiene suficiente reputación para hacer ninguna de estas dos cosas, porque no hicieron la pregunta.
MrWhite

Respuestas:

8

Sin seguridad adicional, no. Las URL aleatorias se rastrean todo el tiempo. Sin embargo, esto es bueno cuando se hace con una página de inicio de sesión para autenticar al usuario.

Una solución intermedia es asegurarse de que la página de estado no contenga datos personales, solo información general. Por ejemplo, 'PAGADO POR CC' en lugar de 'PAGADO por VISA 1234567891' y 'Enviado' en lugar de 'Enviado a John Doe, 123 Blue Street', etc.

Itai
fuente
0

Creo que deberías proteger más esos datos. En cuanto a la simplicidad del sistema, estoy totalmente de acuerdo en que las URL públicas con una cadena aleatoria y única son suficientes y útiles.

Sin embargo, si se van a mostrar los métodos de pago (incluida la información de la tarjeta de crédito), correos electrónicos o teléfonos, allí mismo tiene la necesidad de proteger esos datos. También depende de qué parte del mundo se encuentre, pero en la mayoría de ellos esta necesidad se extiende a asuntos legales y protección de datos del usuario.

Lo que la mayoría de los sitios web de compras hacen para este tipo de situaciones es pedir credenciales (inicio de sesión / contraseña) o un número de seguimiento con un código de seguimiento, o algo que solo el usuario o las partes de confianza del usuario puedan tener.

Alfa
fuente
-1

Sí, es suficiente siempre que:

  1. simplemente envía el enlace por correo electrónico y no lo envía a Google. Pero de acuerdo con su pregunta, esto es lo que hace, por lo que no hay forma de que Google conozca el enlace para que nunca se indexe / rastree.

  2. hace que la ID utilizada en el enlace sea aleatoria y suficientemente larga. Si no es aleatorio, pero usa un número entero incremental simple como ID, uno de sus clientes podría detectarlo fácilmente al ingresar números incrementalmente simples en el enlace, podría leer todos los demás pedidos. Si es aleatorio, pero no lo suficientemente largo (digamos que está hecho de solo 4 dígitos / letras), sería fácil incluso con una PC doméstica atacar por fuerza bruta sus órdenes, solo tendría que intentarlo (26 + 10) ^ 4 = 1,679,616 combinaciones posibles. Digamos que ejecuto un script que prueba un enlace por segundo, el script tardaría menos de 20 días en forzar todos los enlaces posibles y leer todos sus pedidos.

  3. IMPORTANTE: para una mayor seguridad, debe eliminar el enlace después de un cierto número de días (es decir, después de 1 mes). Este es el truco para hacerlo seguro. De esta manera, incluso si alguien intenta forzar sus enlaces con fuerza bruta, necesitaría una gran potencia de cálculo; de lo contrario, su ataque nunca será lo suficientemente rápido como para probar todas las combinaciones posibles antes de que se eliminen. E incluso si tiene una gran potencia de cálculo, difícilmente podría probar más de un enlace por segundo porque el servidor que maneja sus pedidos podría comenzar a rechazar su conexión si intenta conectarse repetidamente una vez por segundo. FYI: eliminar el enlace, no significa que tenga que eliminar todo el orden en la base de datos. Podría usar otra clave primaria para la tabla de pedidos (un incremento automático simple int) y podría usar un campo ÚNICO (que permite NULL) llamado link_id que es el que ingresa en el enlace. Después de un mes, simplemente necesita eliminar el valor de link_id y configurarlo como NULL. De esta manera, el pedido seguirá en la tabla y podrá verse desde su panel de administración, pero el enlace directo ya no será válido para ver directamente la página del pedido.

Marco Demaio
fuente