生产中的源地图文件-安全吗?[关闭]


69

我正在使用UglifyJS来最小化和丑化我的源代码,并使用Sentry报告生产环境中的错误。

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

在生产服务器中这样做是否安全,或者源映射文件应仅在登台环境中存在?
有没有办法将它们保护在生产环境中?


2
我不确定您所说的“安全”是什么意思。是否有可能在源映射中编码的敏感细节?不管是否经过验证,该代码都具有相同的安全性。
彼得·奥尔森

没错,但我希望不会轻易查看源代码,实际上,我希望仅getentry才能使用源代码映射,我知道它并没有添加任何真正的安全性,但我仍然会像那样,我的资源,api和内部逻辑将对普通用户隐藏...
Ofer Velich 2014年

3
普通用户通常不会挖掘源代码,而那些想挖掘源代码以某种方式利用您的人不会因混淆而特别受阻。
彼得·奥尔森

5
程序员不希望其他人查看他们的代码的主要原因之一是缺乏自信。为您创造的东西感到自豪!正如@PeterOlson所说的;普通用户不会深入研究,如果这样做,他们会比您的代码更好地了解Spaghetti的逻辑。其他程序员将在几秒钟内
消除

太好了,谢谢你们两个
Ofer Velich 2014年

Answers:


48

在寻找可能的解决方案时,如果某人不是专门使用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错误,并且不会应用该源映射。

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


1
另一个想法是仅使用身份验证,而不是依赖您的源映射URL指向不可公开访问的单独服务器。我覆盖在博客中发布我前一阵子在使用源这个解决方案在映射安全生产:davidomid.com/...
大卫·奥米德

13

您主要关心的是“如果用户拥有我的源代码可以吗?” 通常情况很好,因为用户仍然可以反混淆事物。

也就是说,如果您使用的是Sentry,则实际上可以使用releases API来避免此问题。您仍然需要生成构件,并设置URL(或API可以处理的URL),但是不必将其公开给Internet。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.