Ответы пользователя по тегу API
  • Как зашифровать АПИ токен на стороне клиента?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    дополнительно шифровать токен достаточно бессмысленная вещь - тк он уже представляет из себя зашифрованные данные.
    Если требуется бОльшая безопасность у токена записывают короткое время жизни и требуют регулярно его обновлять (например каждый час), используя еще один токен)
    Ответ написан
    3 комментария
  • Как бороться с потерями в Actor model?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    гугли saga pattern.
    вообще на акторах заранее указывают стратегию поведения при отказах.
    Ответ написан
    Комментировать
  • Нужно ли очищать БД перед каждым тестом (TDD/BDD)?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    много идеологических вопросов, что именно и зачем тестируете.
    несколько уровней тестирования, обычно при ТДД разработке требуется быстрая обратная связь с тестами, и тестируют исключительно ту функциональность которую разрабатывают, без тестирование зависимостей в виде баз данных и тд, для этого используют разного рода заглушки (в виде мокапа).
    тоесть базу данных вообще не используют.
    В конце разработки, все равно прогоняются "интеграционные" тесты, по всему сервису, чтоб посмотреть работу сервиса в целом, включая все его части, тогда используется максимально идентичное окружение, что и как на продакшене, по возможности даже используя примерно такую-же БД что и на продакшене. База данных в памяти уже не соответствует этому требованию, может случится так, что например разница в задержках между тем как отрабатывало в памяти и как отрабатывает в реальности будет сильно отличатся, и приведет к неожиданному поведению.
    ну и да на каждый такой интеграционный тест базу заново перезаписывают и заполняют темеже самыми данными что и ранее (мы же обычно в тестах проверяем соответствие исходным данным, потом проверяем например изменение этих данных, поэтому без отката этих данных назад, повторить теже самые тесты не получится)
    Ответ написан
    1 комментарий
  • Как лучше реализовать авторизацию на фронте?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    у тебя задача передать токен на сервер -> это можно сделать через использования куки, но так не делают. ТК куки тырят, куки не универсальны и привязанны к определенному браузеру (куки не могут использовать приложения), и куча других проблем, особенно связанных с масштабированием.
    Можно еще передавать токен вместе с каждым запросом в теле самого запроса ( пример: хттпс://адрес.ру/запрос?токен=токен)
    но тогда токен будет сохраняться в истории браузера, и это тоже может привести к некоторым проблемам с безопасностью (например если ты перешел по ссылке, и человек на другом сервисе видет вместе со ссылкой источника перехода токен пользователя, это будет гиганский фэил)
    вобщем наиболее подходящий способ -> передавать токен в каждом запросе вместе с хэдером, (тоесть передавать дополнительные параметры этого запроса минуя адресную строку)
    почитай подробнее про http headers например https://www.tutorialspoint.com/http/http_header_fi...
    Ответ написан
    Комментировать
  • Как защитить rest api?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    классический подход вместе с запросом отдавать данные которые однозначно идентифицируют пользователя (логин пароль с каждым запросом не передают, тк это потенциальная возможность подслушать эти данные, ну и проблема с производительностью, придется на каждый запрос сверяться с базой данных пользователей, что очень накладно)
    обычно для идентификации пользователя сервис при входе создает специальный "ключ" (который пользователь хранит у себя и передает в сервис при каждом запросе).
    раньше для этих целей активно использовали сессии, которые сервер хранил у себя в памяти и сверял введенные данные с этими сессиями - но там множество проблем с маштабируемость и производительность, поэтому сейчас активно используют так называемые "токены"
    в таком токене зашифровано хранятся данные о пользователе, при получении токена сервер расшифровывает находящиеся там данных, ни с чем их у себя не сверяет и НЕ ХРАНИТ, в этих расшифрованных данных конкретно указывается есть ли у пользователя права доступа или нет.

    токены эти могут передаваться на сервер в запросе в качестве параметра:
    хттп://сайт.ру/данные.жсон?токен=ваш_токен

    но такой способ считается плохим тк токены остаются в истории браузера например (ну и гет запросы обрезают длинну возможной ссылки)
    наиболее подходящим способом считается передача токенов в заголовке запроса

    подробнее о токенах советую посмотреть тут: https://jwt.io/introduction/
    Ответ написан
    Комментировать
  • Ответ в REST API?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    привет брат поразуму, всегда также делаю и считаю глупостей вначале передавать код 200 (все оке), а потом еще в ответе писать {статус: "все оке"}

    с другой стороны полно недалеких разрабов, которые не знают как работать с заголовками - и если у тебя какой-то массовый сервис для дебилов, то возможно им нужно дублировать и в теле инфомацию, но я не понимаю как ты для них продублируешь инфу в ответе если например сервак упал, или там 404 выдал.
    хотя я за чистоту апи, чтоб служебной информации в ответе не было, вся служебная информация чтоб в заголовках ппередавалась.
    С другой стороны АПИ должно быть понятным и очевидным без документации, поэтому лучше передавать не просто массив, а именнованный данные.
    Пример:
    запрос гет хттп://юзер/1
    ответ {имя: "вася", возраст: 18}, а не {["вася", "18"]}
    Ответ написан
    Комментировать
  • Почему многие сайты не пользуются собственным API?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    Уверен ВК через свой апи работает, Твиттер например вот он генерирует готовые ХТМЛ страницы и не работает через свой апи и вот по каким причинам - так им быстрее данные рендерить клиенту, в виде готовой HTML страницы с сервера, чем заставлять человека загружать какие-то JS библиотеки и потом ещё дожидаться когда они у клиента отрендерят ответы с апи. Там сознательно приняли отказаться от дополнительных прослоек. К томуже многие клиенты для АПИ построены по технологии одностраничного приложения, и не позволяют индексировать содержимое, это не проблема если у вас какой-нибудь сервис по обработке данных, но если у вас контентный сервис, типа твиттера, для вас это может также оказаться критичным.
    Ответ написан
  • Как авторизовать другого пользователя через OAuth?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    да конечно нужно генерировать другой client_secret для генерации другого аксес_токен, разные пользователи будут иметь разные аксес_токен. Как именно реализовать вход для разных пользователей, это уже вам решать. Но обращаться к гугловому апи они будут через разные токены, получая разные ответы.
    Ответ написан
    Комментировать
  • Как реализовать активацию по email?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    хранить токены в базе. и потом ещё туда постоянно обращаться, что-то узнавать, потом ещё эту базу постоянно очищать и так далее и тому подобное. Это супер гнилой подход.
    кодируйте необходимую информацию (дату генерации токена, и время его окончания) прямо в токен.
    после чего -> всё что вам нужно - это декодировать токен, и сверить полученную из токена дату с текущей.
    а все эти базы с токенами вам нахер не нужны, базарю!
    Ответ написан
  • Существуют ли микрофреймворки для создания апи?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    OAuth2 слишком простой, не делают для него какой-то особой поддержки)
    Ответ написан