Это хорошая практика или необходимо защищать API с помощью аутентификации, даже если данные не являются конфиденциальными? - PullRequest
0 голосов
/ 07 декабря 2018

Приложение My Vue.js, которое взаимодействует с данными через серверную часть Node.js, получает доступ как к конфиденциальным, так и нечувствительным данным.Мне удалось защитить API на сервере Node, которые работают с чувствительными данными (такими как обновление информации о ценах) с помощью API аутентификации Google .Для этого пользователю необходимо войти в систему с учетной записью Google, прежде чем он сможет взаимодействовать с этими API.

Сейчас я пытаюсь защитить API, которые просто извлекают нечувствительные данные (такие как имена, описания, цены на продукты, которые я продаю, и т. д.), так что даже указанные API не могут быть доступны напрямую без какой-либо формы аутентификации.то есть.Если бы я использовал что-то вроде Postman для непосредственного извлечения данных из API, без аутентификации я бы не смог получить никаких данных.Тем не менее, эти API доступны из части Vue.app, которая не требует входа в систему.то есть.Пользователи на сайте могут просматривать информацию о продукте, цене и т. Д. Без необходимости входа в систему.

Чтобы защитить эти «нечувствительные» API, мне нужно будет передать «секретный» ключ, такой как ключ API отвнешний интерфейс Vue к серверному узлу.Я считаю, что из двух других постов, которые я сделал ( здесь и здесь ), невозможно передать переменные окружения в приложение Vue во время выполнения (я используюVue CLI 3).Это оставляет мне необходимость жестко закодировать ключ API в коде переднего плана, что означает, что он больше не является «секретным» или безопасным.

По сути, я пытаюсь выполнить «Аутентификацию приложения», но без возможностичтобы передать переменные ENV в Vue во время выполнения, я не знаю, как сделать это безопасно.

Все, что я читаю в Интернете, указывает на:

  1. Передача переменных ENV вVue во время сборки (что небезопасно в этом сценарии);или
  2. что мне чего-то не хватает из-за того, что я хочу передать переменные ENV в Vue во время выполнения.

Вопрос.защитить данные, которые не являются конфиденциальными?

1 Ответ

0 голосов
/ 07 декабря 2018

Один из способов сделать это:

  1. После успешной аутентификации сгенерировать Web-токен JSON
  2. Отправить токен обратно клиенту (приложение Vue) и сохраните его в локальном хранилище браузера
  3. . На маршруте API, который требуется защитить, добавьте функцию, которая будет проверять, содержит ли запрос токен, предоставленный вами на шаге 2. Вы можете отправить токен как частьтело запроса или, возможно, заголовок.

Это простой, но эффективный способ защиты API.

...