¿Cómo asegurar un servicio web que permita rutas personalizadas definidas por el usuario?

2

Estoy trabajando en un sitio web que reconstruirá los datos como una fuente RSS basada en una ruta personalizada.

Por ejemplo: tienes un video en youtube en el que quieres un feed RSS de comentarios, puedes agregar -rss a la url (por lo que es youtube-rss.com/asdasdasd) y la aplicación web analizará la ruta y pateará fuera de la fuente RSS.

¿Cómo se bloquea el controlador de ruta y se evita la entrada maliciosa? ¿Saneamiento de cuerdas? ¿Validación? ¿Algo más?

    
pregunta Jim Angel 16.03.2018 - 18:40
fuente

1 respuesta

1

Hay ciertas URL que tienen un significado especial para ciertos servicios web y software de cliente que debe asegurarse de que no se puedan usar para generar contenido arbitrario. ("/Crossdomain.xml" de Flash, "/.well-known/<...>" de LetsEncrypt, "google < ... > .html" de verificación del dominio de Google, etc.) Imagínese si alguien hace un YouTube. el video llamado "crossdomain.xml" con contenido xml válido dentro de la descripción del video configurado para engañar al complemento Flash de los visitantes a pensar que el sitio del atacante puede hacer conexiones ajax libremente a su dominio, y luego acceder a "youtube-rss.com/crossdomain". xml "activó una búsqueda de YouTube para" crossdomain.xml "y mostró la descripción del primer resultado. Es posible que el ataque exacto no funcione dependiendo de los detalles sobre Flash y su sitio web, pero existen muchas posibilidades como esta que pueden funcionar si permite que cualquier URL incluya contenido controlado por el usuario.

Una forma fácil y efectiva de defenderse contra esto sin necesidad de enumerar todas las URL especiales posibles sería tener una lista blanca estricta de patrones que admita en la URL. Si las URL de YouTube que te interesa imitar siempre siguen un formato como "/ video? Id = [a-z0-9 _] +" y "/ [a-z0-9 _] +", entonces solo procesa ese tipo de URL, y asegúrese de limitar correctamente los símbolos permitidos en los identificadores. No incluya específicamente estas URL en la lista negra (porque seguramente hay muchas otras similares), pero verifique que no pasen su lista blanca: "youtube-rss.com/crossdomain.xml", "youtube-rss.com/.well -known / abc ", y" youtube-rss.com/google123.html ".

    
respondido por el Macil 16.03.2018 - 23:04
fuente

Lea otras preguntas en las etiquetas