Cómo construir una red de afiliados segura

2

Voy a construir una red de afiliados de demostración, que debe ser protegida. Digamos que tengo una aplicación web llamada Affiliate Network Manager que administra todos los afiliados asociados con mi librería en línea.

Affiliate Network Manager proporciona una API que permite que el sitio web de un editor (un sitio afiliado) obtenga el logotipo del sitio web de la librería, de modo que pueda mostrar el logotipo de la librería en el sitio web del editor.

Supongamos el siguiente escenario: hay un sitio web para editores A, con ID única 123 . Un usuario final visita el sitio web, hace clic en el logotipo, se redirige a la tienda de libros en línea y compra un libro. El sistema obtiene la ID única de la solicitud y sabe que esta solicitud proviene del editor A. Luego, recuerda que el cliente visitó la librería del editor A. Por lo tanto, el editor A recibe una comisión basada en el monto de la transacción. / p>

Esto funciona, pero hay un problema de seguridad: Supongamos que tenemos otro editor B, con ID única 456 . Luego, un atacante del editor B puede capturar una solicitud del editor A y cambiar la ID única a 456 . Entonces, el editor B recibirá la comisión del editor A.

¿Cómo puedo resolver este problema de seguridad y asegurarme de que el atacante no pueda cambiar la ID única cuando se transmite la solicitud? O en otras palabras: ¿cómo puedo realizar la autenticación en este caso?

    
pregunta user44858 17.04.2014 - 08:19
fuente

2 respuestas

1

Cuando lo entendí correctamente, los afiliados tienen anuncios de banner en sus sitios web que se parecen a esto en el código HTML:

<a href="http://example.com/store.php?UniqueID=123"><img src="http://example.com/banner.png"></a>

ysuescenariodeataqueesquecuandounvisitantehaceclicenesebanner,unMITMreemplazaelUniqueIDenlasolicituddevisitantesporotro.

Paraobteneringresossignificativosalexplotarunareddeafiliados,unotendríaquepoderjugarMITMenunagrancantidaddeconexiones.Unataquedeintermediarioyaesbastantedifícilderealizarcuandoelatacantenocontrolaningunadelasinfraestructurasderedentreelvisitanteysuservidor.Entonces,elescenarioquepropusonoesmuyprobable,amenosqueunodelosafiliadosseatambiénunISPconmuchaenergíacriminal.

Peroinclusocuandoelatacantetienecontroltotalsobrelaconexión,puedeshacerqueseacasiimposiblerealizarunataqueMITMcuandousasTLS.AsíquesolopídalesasusafiliadosquesevinculenasulibreríausandoenlacesHTTPSenlugardeHTTP.Cuandotengasunatiendaenlínea,deberíasestarsoportandoTLSdetodosmodos.

<ahref="https://example.com/store.php?UniqueID=123"><img src="http://example.com/banner.png"></a>
    
respondido por el Philipp 17.04.2014 - 14:56
fuente
1

Lo que básicamente necesitas hacer es:

  1. Verifique que una solicitud provenga de un usuario autenticado, es decir, un usuario (o servicio) que tenga permiso para usar su API; y
  2. Asegúrese de que una solicitud no se modifique mientras está en tránsito, comúnmente conocida como Man-in-the- ataque medio .

Usted podría instalar certificados X.509 en el sitio web de cada editor y usar esto para autenticarlos a través de una conexión HTTPS . Sin embargo, esto no parece ser hecho comúnmente.

Recomiendo hacer una investigación sobre el OAuth 2.0 standard . Resuelve ambos problemas y existen bibliotecas de software para la mayoría de los marcos de aplicaciones web.

    
respondido por el Steven Volckaert 17.04.2014 - 08:54
fuente

Lea otras preguntas en las etiquetas