Javascript.RU

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

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

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

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

Сообщение от 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,730

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

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

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

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

Сообщение от micscr
На php обычно
Причем здесь php? Ты вообще отличаешь клиент-сервер/frontend-backend? frontend он всегда такой html+css+js, а backend он разный php/java/nodejs/... Как на php вещи скрыты, так и на node.js они могут быть скрыты. Да, то что человек сделал - неправильно, но он мог это сделать и при наличии php. Просто js это единственный язык, который можно использовать по обе стороны приложения. nuxt.js это просто абстракция от клиент-серверной архитектуры (введение), чтобы ты на одном языке всё мог писать, которая состоит из vue.js (клиент) + node.js (сервер) + webpack.js (сборщик) + babel.js (компилятор). vue.js это просто пользовательский интерфейс (введение), который ты можешь прикрутить хоть к php. Из-за этой nuxt-абстракции у тебя видимо и такая иллюзия...

Последний раз редактировалось Rise, 10.06.2020 в 08:50.
Ответить с цитированием
  #8 (permalink)  
Старый 09.06.2020, 14:47
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,568

Да нет у меня никакой иллюзии. Ноду я не упоминал т.к. с ней не работаю на сервере, а так то понятно что она, что 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