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