Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.06.2020, 09:13
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,577

Это ошибка безопасности при работе с api или нет?
Привет.
Человек выставил свой пример сборки на vue и там данные берутся из API стороннего сервиса. Доступ по ключу, который он в личном кабинете на том сайте получил.
И вот этот ключ прекрасно виден всем посетителям сайта.
На php обычно все такие вещи скрыты, даже от членов одной команды - окружение локальное vs prod.
А тут открытенько.
Ну допустим там информация может не такая ценная, но в общем то - он нарушил тут ? Есть какие то стандарты вот такой работы с закрытым API, когда из js-а виден запрос к API? (когда это не один сайт с аутенификацией и т.д.)
Ответить с цитированием
  #2 (permalink)  
Старый 09.06.2020, 13:11
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

Если проект для «поиграться», то пофигу светится ли api-key или нет, если нет, то стоит скрыть api-key, например проксируя запросы своим сервером.
Если api-key жестко привязан к конкретному домену, то тут опять пофигу светится он в приложении или нет.

Если у production окружения уведут api-key стороннего сервиса, который никак не защищен, то у злоумышленника появится возможность нарушить работу сервера жертвы, например, путем превышения всевозможных лимитов при работе с api.
Ответить с цитированием
  #3 (permalink)  
Старый 09.06.2020, 13:43
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,577

Сообщение от Nexus Посмотреть сообщение
Если проект для «поиграться», то пофигу светится ли api-key или нет, если нет, то стоит скрыть api-key, например проксируя запросы своим сервером.
Ну там явно поиграться, но звоночек то неприятный, сам факт что так решил делать
Сообщение от Nexus Посмотреть сообщение
Если api-key жестко привязан к конкретному домену, то тут опять пофигу светится он в приложении или нет.
А как ихний сервер определит с какого домена и откуда этот запрос?
Сообщение от Nexus Посмотреть сообщение
Если у production окружения уведут api-key стороннего сервиса, который никак не защищен, то у злоумышленника появится возможность нарушить работу сервера жертвы, например, путем превышения всевозможных лимитов при работе с api.
Ну вот у меня мысли такие же, чтобы мне самому не регаться у них (вдруг это платно), спокойно взял посмотрел ключик у того веб мастера
Ответить с цитированием
  #4 (permalink)  
Старый 09.06.2020, 13:51
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

Сообщение от micscr
А как ихний сервер определит с какого домена и откуда этот запрос?
С помощью заголовков.
Ответить с цитированием
  #5 (permalink)  
Старый 09.06.2020, 13:59
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,577

Все эти заголовки, рефереры, подделываются легко
Ответить с цитированием
  #6 (permalink)  
Старый 09.06.2020, 14:03
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

Сообщение от micscr
Все эти заголовки, рефереры, подделываются легко
Из браузера заголовок Origin подменить не выйдет, другое дело, если это будет сервер.

В общем согласен с вами, что привязка ключа к домену - не защита вовсе.
Ответить с цитированием
  #7 (permalink)  
Старый 09.06.2020, 14:47
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,577

Да нет у меня никакой иллюзии. Ноду я не упоминал т.к. с ней не работаю на сервере, а так то понятно что она, что php в этом контексте взаимозаменяемы.
Меня удивило что тот человек такое в коде отморозил, поэтому и поинтересовался, может какой есть хитрый способ на фронте такое проворачивать. Но уже понял что нет, без бэкенда не обойтись, что славно.

As a rule of thumb, never include credentials in client side JavaScript.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объект не поддерживает это свойство или метод load_081112_0953.js 1auto1 Internet Explorer 1 13.04.2011 21:59
Как при чтении или записи свойства объекта вызывать функцию danik.js Общие вопросы Javascript 3 16.09.2010 17:57
Нужно ли в этом примере (это) объявление переменных или нет? sashka++ Общие вопросы Javascript 5 31.07.2010 04:47
Сторонние библиотеки - быть или не быть? IIIEPJIOK Оффтопик 64 21.03.2009 19:39
Странность при вычислении выражений.. Это баг или фича? krvwd Общие вопросы Javascript 9 28.01.2009 18:04