web-dev-qa-db-fra.com

Fichiers source de cartes en production - Est-ce sûr?

J'utilise glifyJS pour réduire et uglifier mes sources, et Sentry pour signaler les erreurs de mon environnement de production.

Afin d'obtenir des erreurs de Sentry, d'une manière lisible, je dois ajouter la carte source

Est-il sûr de le faire dans les serveurs de production, ou les fichiers source-maps ne devraient exister que sur un environnement intermédiaire?
Existe-t-il un moyen de les sécuriser sur l'environnement de production?

59
Ofer Velich

À la recherche d'une solution possible à cela, et si quelqu'un n'utilise pas spécifiquement Sentry, je suis arrivé à ce billet de blog (ironiquement un billet de blog Sentry):

https://blog.sentry.io/2015/10/29/debuggable-javascript-with-source-maps.html

Là où il y a une idée intéressante: "les cartes sources privées". Cela implique de générer les cartes sources dans un endroit qui n'est pas accessible depuis Internet (comme le VPN de votre entreprise), de sorte que seuls vous ou votre équipe pouvez accéder aux fichiers de cartes sources.

Citant la section "Cartes source privées" de l'article:

[...] tous nos exemples supposent que vos cartes sources sont accessibles au public et servies à partir du même serveur que votre code JavaScript d'exécution. Dans ce cas, tout développeur peut les utiliser pour obtenir votre code source d'origine.

Pour éviter cela, au lieu de fournir une sourceMappingURL accessible au public, vous pouvez plutôt servir vos cartes sources à partir d'un serveur qui n'est accessible qu'à votre équipe de développement. Par exemple, un serveur accessible uniquement à partir du VPN de votre entreprise.

// # sourceMappingURL: http: //company.intranet/app/static/app.min.js.map

Lorsqu'un membre non membre de l'équipe visite votre application avec les outils de développement ouverts, il tente de télécharger cette carte source mais obtient une erreur HTTP 404 (ou 403), et la carte source ne sera pas appliquée.

Cela me semble une bonne idée!

45
John Bernardsson

Vos principales préoccupations seront "est-ce correct si l'utilisateur a mon code source?" Habituellement, c'est bien, car les utilisateurs peuvent de toute façon désobscurcir les choses.

Cela dit, si vous utilisez Sentry, vous pouvez réellement utiliser libère l'API pour éviter ce problème. Vous devrez toujours générer les artefacts et définir des URL (ou quelque chose que l'API peut gérer), mais vous n'avez pas à les exposer à Internet.

11
David Cramer