web-dev-qa-db-ja.com

ソースは本番環境のファイルをマップします-安全ですか?

glifyJS を使用してソースを縮小およびUglifyし、 Sentry を使用して実稼働環境からエラーを報告しています。

Sentryからエラーを取得するには、読みやすい方法で、source-mapを追加する必要があります

本番サーバーで実行しても安全ですか、またはソースマップファイルはステージング環境にのみ存在する必要がありますか?
本番環境でそれらを保護する方法はありますか?

59
Ofer Velich

これの可能な解決策を探して、誰かがSentryを特に使用していない場合、私はこのブログ投稿(皮肉なことにSentryブログ投稿)に行きました:

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

興味深いアイデアがある場合:「プライベートソースマップ」。これは、インターネットからアクセスできない場所(会社のVPNなど)でソースマップを生成することを意味するため、ソースマップファイルにアクセスできるのはユーザーまたはチームだけです。

投稿の "Private Source Maps"セクションの引用:

[...]すべての例は、ソースマップが公開されており、実行中のJavaScriptコードと同じサーバーから提供されることを前提としています。その場合、すべての開発者はそれらを使用して元のソースコードを取得できます。

これを防ぐには、公開アクセス可能なsourceMappingURLを提供する代わりに、開発チームのみがアクセスできるサーバーからソースマップを提供できます。たとえば、会社のVPNからのみ到達可能なサーバー。

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

開発者ツールを開いた状態でチーム以外のメンバーがアプリケーションにアクセスすると、このソースマップをダウンロードしようとしますが、404(または403)HTTPエラーが発生し、ソースマップは適用されません。

私には良いアイデアのようです!

45

主な懸念事項は、「ユーザーが私のソースコードを持っているかどうか」です。ユーザーはとにかく物を難読化解除できるため、通常は問題ありません。

つまり、Sentryを使用している場合は、実際に releases API を使用してこの問題を回避できます。それでもアーティファクトを生成し、URL(またはAPIが処理できるもの)を設定する必要がありますが、それらをインターネットに公開する必要はありません。

11
David Cramer