源映射生产中的文件 - 安全吗?

Ofe*_*ich 60 javascript sentry uglifyjs raven source-maps

我正在使用UglifyJS来缩小和整理我的资源,而Sentry则报告我的生产环境中的错误.

为了以可读的方式从Sentry获取错误,我需要添加source-map

在生产服务器中执行它是否安全,或者源映射文件是否应仅存在于暂存环境中?
有没有办法在生产环境中保护它们?

Joh*_*son 47

正在寻找可能的解决方案,如果有人没有专门使用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错误,并且不会应用源地图.

对我来说似乎是个好主意!


Dav*_*mer 11

您的主要关注点是"如果用户有源代码,那可以吗?" 通常它很好,因为用户可以反过来去混淆事物.

也就是说,如果您使用的是Sentry,您实际上可以使用版本API来避免此问题.您仍然需要生成工件,并设置URL(或API可以处理的东西),但您不必将它们暴露给互联网.