74

私はUglifyJSを使用してソースを縮小および醜くし、Sentryを使用して本番環境からのエラーを報告しています。

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

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

4

2 に答える 2

53

これに対する可能な解決策を探していて、誰かが特に 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 エラーが発生し、ソース マップは適用されません。

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

于 2016-09-01T06:01:30.813 に答える
13

あなたの主な関心事は、「ユーザーが私のソースコードを持っていても大丈夫ですか?」ということです。とにかく、ユーザーは難読化を解除できるので、通常は問題ありません。

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

于 2015-06-25T01:44:40.007 に答える