Задать вопрос
liamlime
@liamlime
Frontend/Wordpress developer

Как скрыть конфиги в js веб-приложении?

Допустим у меня есть веб-приложение построенное на js модулях (не важно нативный js или Vue или React приложение), которые собираются с помощью webpack в финальный билд файл для продакшена. В этом приложении есть модули подключение к Базе Данных и другие модули, использующие конфиги с информацией, которую пользователь на фронте не должен знать.

Вопрос: Как сделать так, что бы объекты конфигов, используемые в модулях, не попали в финальный билд? Или попали в него но так, что бы юзер не смог их "прочесть"? Учитывая что сами модули, использующие эти конфиги, должны в финальном билде присутствовать. Тоесть мне нужно скрыть эти конфиги от возможности просмотреть их инспектором кода или путем выкачивания билд файла конечным пользователем, либо любым другим способом.

Какой бест практиз существует в этом случае? Если можно с примерами кода пожалуйста.

Заранее благодарю за ваши ответы.
  • Вопрос задан
  • 1026 просмотров
Подписаться 5 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 5
flapflapjack
@flapflapjack
на треть я прав
фронтенд на то и фронтенд, что к любой его части у браузера есть доступ
Ответ написан
ArsenyMatytsyn
@ArsenyMatytsyn
Руководитель frontend направления, предприниматель
Конфиги из морды можно спрятать только зашив их не в морду.
Что, собсно, мешает использовать прослойку в виде одного файла php? Ты ему запрос, в нем запрос по данным (конфигу) к бд и на возврате ответ в json, к примеру.
То же самое, я думаю, можно и в ноде провернуть, да и в принципе в любом бэке, который работает, как бэк, но пример с пыхой — это классика ассинхронных запросов =)
.....из тех времен, когда смайлики мы писали именно так ↑
Ответ написан
@McBernar
Подключение к БД на фронте? Это что-то новенькое.

Если вы имели в виду запросы к API, то они будут видны в любом случае — просто откройте вкладку network и читайте все заголовки, ключи, запросы и ответы.

Если вы хотите, чтобы нельзя было обратиться к вашему API из других мест — настраивайте CORS, добавляйте JWT.
Ответ написан
Robur
@Robur
Знаю больше чем это необходимо
Как сделать так, что бы объекты конфигов, используемые в модулях, не попали в финальный билд?

через https://webpack.js.org/plugins/ignore-plugin/. Правда весь код который их использует сломается.

Или попали в него но так, что бы юзер не смог их "прочесть"?
Учитывая что сами модули, использующие эти конфиги, должны в финальном билде присутствовать.
Тоесть мне нужно скрыть эти конфиги от возможности просмотреть их инспектором кода или путем выкачивания билд файла конечным пользователем, либо любым другим способом.

Только на уровне "бабушкиной защиты" - можно сделать так что ваша бабушка не сможет, но всегда найдется тот кто сможет.

Какой бест практиз существует в этом случае?


варианта два - либо вы правильно проектируете систему и обеспечиваете защиту на стороне firebase или что там у вас и за счет грамотного разделения прав доступа, если это позволяет проект
Вы же, я надеюсь, не используете в качества API токенов те которые дают полный доступ к базе? :)

либо недостающее должен предоставить пользователь каки-либо образом.
Ответ написан
Комментировать
heksen
@heksen
Перенести конфиги на бэкенд.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы