EDIT Ha habido upvotes retraídos o downvotes debido a, creo, un grave malentendido de mi pregunta. A continuación, no me preocupa la URL que conduce a un sitio que contiene malware o exploits (no es que no sea una preocupación: simplemente no es de lo que trata esta pregunta): Me preocupa la inyección en la cadena de la URL. Lo que no quiero es que un pirata sea capaz de esquivar la seguridad de "cualquier marco" y poder inyectar, por ejemplo, código JavaScript en una URL que luego mostraría a otros usuarios. En otras palabras: estoy buscando una medida adicional para reducir el riesgo de que se ejecute JavaScript fraudulento como si viniera de mi aplicación web.
Con el fin de fortalecer una aplicación web, estoy pensando en no mostrar nunca las direcciones URL ingresadas por los usuarios y aún así permitirles ingresar direcciones URL, pero siempre usar un servicio de acortador de URL. Esto no pretende reemplazar otras buenas prácticas de seguridad, sino que debe utilizarse además de otras prácticas de seguridad.
Aquí hay un escenario muy simple:
- lo único que un usuario puede ingresar al sitio web es una única URL
- la URL enviada por el usuario se envía a un servicio de acortador de URL externo
- la URL abreviada se sirve desde mi sitio web
Si durante el primer paso consideramos que mi analizador no tiene fallas al analizar los parámetros POST enviados por el usuario, ¿qué puede fallar más adelante si hay un exploit exitoso en la URL que afectaría el servicio de acortamiento de URL?
Básicamente, mi idea sería servir, digamos, un codificado:
http://bit.ly/
seguido de una regla muy estricta que dice algo como: "inserta a lo sumo 9 caracteres y estos caracteres deben ser alfanuméricos" .
Lo haría para simplificar la regla sobre qué caracteres puede y no puede enviar el usuario: la salida de una URL bit.ly es mucho más sencilla de lo que permiten las URL legítimas ( Utilicé bit.ly como ejemplo, cualquier servicio de acortador de URL que utilice un subconjunto de caracteres muy estricto en las URL acortadas que devuelve haría).
Entonces, ¿cuál sería el peor de los casos si consideramos que el usuario deshonesto no puede explotar mi sitio web pero aún así puede explotar una falla en el servicio de acortamiento de URL?
Lo que me gustaría averiguar mejor es lo que significa cuando se trata de la misma política de origen / XSS y CSRF y otros tipos de explotaciones.
Y, supongo, mi pregunta podría resumirse de la siguiente manera: "Si la seguridad se realiza correctamente en mi sitio web, ¿la vulnerabilidad de XSS que afecta al servicio de acortamiento de URL seguirá siendo mi preocupación o no?"
La idea general sería agregar defensa en profundidad y considerar que el servicio de acortamiento de URL probablemente sepa cómo defenderse acerca de las inyecciones de URL.