【问题标题】:Source maps files in production - Is it safe? [closed]生产中的源映射文件 - 安全吗? [关闭]
【发布时间】:2015-02-05 08:56:00
【问题描述】:

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

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

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

【问题讨论】:

  • 我不确定您所说的“安全”是什么意思。是否有可能在源地图中编码的敏感细节?代码无论是否丑化都具有相同的安全性。
  • 确实是这样,但是我更喜欢不方便查看源,其实我更喜欢只有getsentry,才能使用源映射,我知道它不会添加任何真正的安全性,但我仍然希望我的来源、api 和内部逻辑对普通用户隐藏......
  • 普通用户通常不会深入挖掘源代码,而那些想通过挖掘源代码来利用你的人也不会被混淆所吓倒。
  • 程序员不希望别人查看他们的代码的第一大原因是缺乏自信。为你创造的东西感到自豪!正如@PeterOlson 所说;普通用户不会深入研究,如果他们这样做了,他们会比你的代码更好地理解 Spaghetti 的逻辑。其他程序员将在几秒钟内对您的代码进行反混淆......
  • 我在这个讨论上晚了几年,但我想我会分享一篇我不久前写的关于在生产环境中安全使用源映射的帖子。在我的示例中,我使用的是 .NET Core,但同样的原理可以应用于任何平台:davidomid.com/…

标签: javascript uglifyjs sentry source-maps raven


【解决方案1】:

正在寻找一个可能的解决方案,如果有人没有专门使用 Sentry,我找到了这篇博文(讽刺的是一篇 Sentry 博文):

https://blog.sentry.io/2015/10/29/debuggable-javascript-with-source-maps.html

有一个有趣的想法:“私有源地图”。这意味着在无法从 Internet 访问的地方(例如您的公司 VPN)生成源地图,因此只有您或您的团队可以访问源地图文件。

引用帖子的“Private Source Maps”部分:

[...] 我们所有的示例都假定您的源映射是公开可用的,并且从与您执行的 JavaScript 代码相同的服务器提供服务。在这种情况下,任何开发人员都可以使用它们来获取您的原始源代码。

为防止这种情况发生,您可以改为从只有您的开发团队可以访问的服务器提供源地图,而不是提供可公开访问的 sourceMappingURL。例如,只能通过您公司的 VPN 访问的服务器。

//# sourceMappingURL:http://company.intranet/app/static/app.min.js.map

当非团队成员在打开开发者工具的情况下访问您的应用程序时,他们会尝试下载此源映射,但会收到 404(或 403)HTTP 错误,并且不会应用源映射。

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

【讨论】:

  • 另一个想法是只使用身份验证,而不是依赖指向不可公开访问的单独服务器的源映射 URL。我在不久前发布的一篇关于在生产中安全使用源映射的博客文章中介绍了这个解决方案:davidomid.com/…
【解决方案2】:

您主要关心的是“如果用户有我的源代码可以吗?”通常没问题,因为用户无论如何都可以对事物进行去混淆处理。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-19
    • 2011-12-23
    • 2021-04-28
    • 1970-01-01
    • 2012-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多