2014-12-07 85 views
27

我正在使用UglifyJS來縮小和醜化我的來源。生產中的源文件映射文件 - 安全嗎?

我使用getsentry來報告我的生產環境中的錯誤。

爲了從getsentry得到錯誤,以可讀的方式,我需要添加源地圖

它是安全的這樣做在生產服務器,或源地圖文件應該只在臨時環境存在?

有沒有辦法在生產環境中保護它們?

Thankes

+2

我不確定你的意思是「安全」。是否有可能在源地圖中編碼的敏感細節?代碼具有相同的安全性,無論它是否被醜化。 – 2014-12-07 17:33:43

+0

這是真的,但我更喜歡源代碼不會被輕易查看,實際上我更喜歡只有getsentry,才能使用源代碼貼圖,我知道它沒有增加任何真正的安全性,但仍然是我希望我的來源,apis和內部邏輯對普通用戶是隱藏的...... – 2014-12-07 19:08:17

+3

正常用戶通常不會挖掘源代碼,而那些想要深入挖掘源代碼以便以某種方式利用您的人不會受到混淆。 – 2014-12-07 21:29:27

回答

8

您的主要關注將是「是確定的,如果用戶有我的源代碼?」通常這很好,因爲用戶可以反正混淆東西。

也就是說,如果你使用Sentry,你實際上可以使用releases API來避免這個問題。您仍然需要生成工件,並設置URL(或API可以處理的內容),但是您不必將它們公開給Internet。

27

尋找一個可能的解決方案,這一點,如果有人沒有特別使用哨兵,我得到了這個博客帖子(諷刺的是一個哨兵博客文章):

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錯誤,和源地圖不會被應用。

對我來說這似乎是個好主意!