我正在使用UglifyJS来最小化和丑化我的源代码,并使用Sentry报告生产环境中的错误。
为了从Sentry中获取错误,以一种可读的方式,我需要添加source-map
在生产服务器中这样做是否安全,或者源映射文件应仅在登台环境中存在?
有没有办法将它们保护在生产环境中?
Answers:
在寻找可能的解决方案时,如果某人不是专门使用Sentry,我会读到此博客文章(讽刺地是Sentry博客文章):
https://blog.sentry.io/2015/10/29/debuggable-javascript-with-source-maps.html
哪里有个有趣的主意:“私人源地图”。这意味着在无法从Internet访问的某个地方(例如您的公司VPN)生成源地图,因此只有您或您的团队可以访问源地图文件。
引用该帖子的“私人源地图”部分:
我们所有的示例都假设您的源映射是公开可用的,并且与执行JavaScript代码的服务器位于同一服务器上。在这种情况下,任何开发人员都可以使用它们来获取您的原始源代码。
为避免这种情况,您可以从只能由开发团队访问的服务器上提供源地图,而不必提供可公开访问的sourceMappingURL。例如,只能通过您公司的VPN访问的服务器。
//#sourceMappingURL:HTTP://company.intranet/app/static/app.min.js.map
当非团队成员在开发人员工具打开的情况下访问您的应用程序时,他们将尝试下载此源映射,但会收到404(或403)HTTP错误,并且不会应用该源映射。
对我来说似乎是个好主意!
您主要关心的是“如果用户拥有我的源代码可以吗?” 通常情况很好,因为用户仍然可以反混淆事物。
也就是说,如果您使用的是Sentry,则实际上可以使用releases API来避免此问题。您仍然需要生成构件,并设置URL(或API可以处理的URL),但是不必将其公开给Internet。