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

时间:2014-12-07 17:29:27

标签: javascript uglifyjs sentry source-maps raven

我正在使用UglifyJS来缩小和整理我的来源,并Sentry报告我的制作环境中的错误。

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

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

2 个答案:

答案 0 :(得分:42)

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

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

答案 1 :(得分:11)

您主要担心的是“如果用户有我的源代码,那可以吗?”通常它很好,因为用户无论如何都可以反混淆。

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