Tengo una aplicación web que necesita usar raspado, y necesito decidir entre 3 arquitecturas diferentes sobre cómo se dividirá el raspado entre el backend y el frontend.
Mi aplicación web usa un backend NodeJS (con Express) y un frontend React. Mi objetivo es analizar/extraer algo de HTML de un sitio web externo (lo llamaremos fakewebsite.com), probablemente con un paquete como Cheerio.
Aquí está el flujo general que necesita mi aplicación:
El usuario especifica una URL de fakewebsite.com (por ejemplo, fakewebsite.com/post/12345) en mi sitio web front-end
Esa página se analiza y los campos específicos se extraen de su HTML, y finalmente se entregan al backend para realizar una lógica de backend adicional.
Se me ocurren 3 configuraciones posibles para lograr este objetivo. Necesito decidir cuál es el mejor para seguir adelante.
Método A: todo el front-end
Esto parece bueno, pero expondría cierta lógica comercial (no lógica crítica, pero tampoco ideal) a los usuarios front-end.
Método B: todo el back-end
Siento que esta opción no escalaría porque fakewebsite.com bloquearía mi backend para que no realice solicitudes después de un tiempo
Método C: Mezcla de front-end y back-end
Me gusta más esta opción. Sin embargo, dudo sobre las fallas de seguridad con este enfoque, ya que, en teoría, un usuario malintencionado podría usar el punto final posterior con algún código HTML diseñado para inyectar código malicioso en mi servidor Node.
¿Están justificadas mis preocupaciones sobre las fallas de seguridad en el Método C (carga de HTML a Express)? ¿Tiene alguna recomendación sobre la mejor manera de proceder con la arquitectura de este problema de raspado?
Solo asegúrese de no publicar ningún código potencialmente malicioso en su backend.
Puede usar una biblioteca de desinfección como 'sanitize-html' ( https://npmjs.com/package/sanitize-html ) o 'dompurify' ( https://www.npmjs.com/package/dompurify ) y desinfectar su cadena antes de PUBLICARLO. Entonces estarás bien.