Файлы исходных карт на производстве - это безопасно?

Я использую UglifyJS, чтобы минимизировать и убрать мои источники.

Я использую getsentry, чтобы сообщать об ошибках из моей рабочей среды.

Чтобы получить ошибки от getsentry, читаемым образом, мне нужно добавить исходную карту

Безопасно ли это делать на производственных серверах или файлы исходных карт должны существовать только в промежуточной среде?

Есть ли способ защитить их в рабочей среде?

Thankes

Ответ 1

В поисках возможного решения этого вопроса, и если кто-то не использует Sentry специально, я попал на этот пост в блоге (по иронии судьбы):

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

Где есть интересная идея: "частные карты источников". Это подразумевает создание исходных карт в том месте, которое недоступно из Интернета (например, VPN вашей компании), поэтому только вы или ваша команда можете получить доступ к файлам sourcemaps.

Цитата раздела "Частные исходные карты" сообщения:

[...] все наши примеры предполагают, что ваши исходные карты общедоступны и обслуживаются с того же сервера, что и ваш исполняемый код JavaScript. В этом случае любой разработчик может использовать их для получения исходного исходного кода.

Чтобы предотвратить это, вместо предоставления общедоступного sourceMappingURL, вы можете вместо этого использовать исходные карты с сервера, доступного только вашей команде разработчиков. Например, сервер, доступный только из вашей компании VPN.

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

Когда участник, не являющийся членом команды, посещает ваше приложение с помощью инструментов разработчика, он попытается загрузить эту исходную карту, но получит 404 (или 403) ошибку HTTP, а исходная карта не будет применяться.

Мне кажется хорошей идеей!

Ответ 2

Ваши основные проблемы будут: "это нормально, если у пользователя есть исходный код?" Обычно это нормально, так как пользователи могут деобфассировать все в любом случае.

Тем не менее, если вы используете Sentry, вы можете использовать для выпуска API, чтобы избежать этой проблемы. Вам все равно нужно будет создавать артефакты и устанавливать URL-адреса (или что-то, что может обрабатывать API), но вам не нужно выставлять их в Интернете.