javascript - Archivos de mapas de origen en producción: ¿es seguro?
uglifyjs sentry (2)
Estoy usando UglifyJS para UglifyJS y uglificar mis fuentes, y Sentry para informar errores de mi entorno de producción.
Para obtener errores de Sentry, de manera legible, necesito agregar el mapa fuente
¿Es seguro hacerlo en servidores de producción o los archivos de mapas de origen solo deberían existir en el entorno de ensayo?
¿Hay alguna manera de asegurarlos en el entorno de producción?
Buscando una posible solución a esto, y si alguien no está usando específicamente Sentry, llegué a esta publicación de blog (irónicamente, una publicación de blog de Sentry):
https://blog.sentry.io/2015/10/29/debuggable-javascript-with-source-maps.html
Donde hay una idea interesante: "mapas fuente privados". Implica generar los mapas de origen en un lugar que no sea accesible desde Internet (como la VPN de su empresa), de modo que solo usted o su equipo puedan acceder a los archivos de mapas de origen.
Citando la sección "Mapas de fuentes privadas" de la publicación:
[...] todos nuestros ejemplos asumen que sus mapas fuente están disponibles públicamente y se sirven desde el mismo servidor que el código JavaScript que está ejecutando. En cuyo caso, cualquier desarrollador puede usarlos para obtener su código fuente original.
Para evitar esto, en lugar de proporcionar un sourceMappingURL de acceso público, puede servir sus mapas de origen desde un servidor al que solo puede acceder su equipo de desarrollo. Por ejemplo, un servidor al que solo se puede acceder desde la VPN de su empresa.
// # sourceMappingURL: http://company.intranet/app/static/app.min.js.map
Cuando un miembro que no pertenece al equipo visita su aplicación con las herramientas de desarrollador abiertas, intentará descargar este mapa fuente pero recibirá un error HTTP 404 (o 403), y el mapa fuente no se aplicará.
¡Me parece una buena idea!
Sus principales preocupaciones serán "¿está bien si el usuario tiene mi código fuente?" Por lo general, está bien, ya que los usuarios pueden desofuscar las cosas de todos modos.
Dicho esto, si está utilizando Sentry, en realidad puede usar la API de versiones para evitar este problema. Aún necesitará generar los artefactos y establecer URL (o algo que la API pueda manejar), pero no tiene que exponerlos a Internet.