Как обеспечить простой Node.js RESTful API - PullRequest
0 голосов
/ 29 апреля 2020

Я занимаюсь разработкой простого новостного приложения, в котором пользователи могут видеть последние новости без входа в систему, я не знаю, как сделать его безопасным, я прочитал, что следует использовать JWT с OAuth2, но, насколько я понимаю, пользователь должен войти в систему в провайдера, чтобы получить токен, но я хочу, чтобы пользователи могли читать данные без входа в систему. Сейчас меня беспокоит вопрос о том, как запретить другим людям использовать мой API в своих приложениях, а также о DoS-атаках.

1 Ответ

0 голосов
/ 01 мая 2020

ВЫЗОВ

Я разрабатываю простое приложение для новостей, где пользователи могут видеть последние новости без входа в систему, я не знаю, как сделать его безопасным

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

Для защиты и привязки сервера API к конкретному приложению c требуется что-то секретное для использования в каждом запросе для проверки подлинности Что выполняет запрос, но как только вы публикуете веб-приложение или мобильное приложение в общедоступном c, любой секретный ключ теперь находится в общедоступном c домен, поэтому больше не секрет, так как лучше использовать его в качестве слабого идентификатора.

Веб-приложение

Веб-приложение работает в Таким образом, все, что нужно сделать злоумышленнику, - это проверить исходный код страницы и извлечь секрет, а затем использовать его в автоматизированных сценариях или в ручных запросах от curl или в таких инструментах, как Postman.

Мобильное приложение

Некоторые разработчики думают, что, поскольку мобильное приложение выпущено в виде двоичного файла, они могут просто поместить туда секрет, и никто не найдет его ... Ну, я должен сказать, что в прошлом я был одним из них, но потом я узнал, что существует множество инструментов с открытым исходным кодом, чтобы сделать эту задачу тривиальной, что даже сценарист может это сделать. Мой предпочтительный инструмент для этого - MobSF , и вы можете увидеть пример использования его в этой статье, которую я написал Как извлечь ключ API из мобильного приложения с помощью Stati c Двоичный анализ :

Ассортимент инструментов с открытым исходным кодом, доступных для реверс-инжиниринга, огромен, и мы действительно не можем вкратце рассказать об этой топике c в этой статье, но вместо этого мы сосредоточимся в использовании Mobile Security Framework (MobSF), чтобы продемонстрировать, как выполнить обратный инжиниринг APK нашего мобильного приложения. MobSF - это набор инструментов с открытым исходным кодом, которые представляют свои результаты на привлекательной панели инструментов, но те же инструменты, которые используются в MobSF и других местах, могут использоваться отдельно для достижения тех же результатов.

MobSF - Mobile Security Framework :

Mobile Security Framework - это автоматизированная универсальная платформа для тестирования пера мобильного приложения (Android / iOS / Windows), способная выполнять c анализ, динамический c анализ, анализ вредоносных программ и тестирование веб-API.

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

JWT и OAUTH2

Я прочитал, что следует использовать JWT с OAuth2, но, насколько я понимаю, пользователь должен войти в провайдер, чтобы получить токен

Да, пользователю потребуется войти в систему, чтобы получить токен OAuth, но любой тип токена, который приходит от имени пользователя, успешно идентифицируется. ifies Кто в запросе, а не Что выполняет запрос, и, по моему опыту, это очень распространенное заблуждение среди разработчиков, независимо от того, являются ли они младшим или старшим разработчиком .

Разница между ВОЗ и ЧТО обеспечивает доступ к API-серверу

Я написал серию статей о безопасности Mobile API и в статье Зачем вашему мобильному приложению нужен API Ключ? Вы можете подробно прочитать разницу между Кто и Что делает запрос на ваш сервер API:

что это то, что делает запрос к серверу API. Действительно ли это подлинный экземпляр вашего мобильного приложения, или это бот, автоматизированный скрипт или злоумышленник, вручную копающийся в вашем API-сервере с помощью такого инструмента, как Postman?

who является пользователем мобильного приложения, которое мы можем аутентифицировать, авторизовывать и идентифицировать несколькими способами, например, используя OpenID Connect или потоки OAUTH2.

Возможно, вы Удивлен, что иногда даже ваши пользователи git могут атаковать ваш API-сервер, чтобы попытаться получить выгоду от вашего сервиса, которая в противном случае не имела бы доступа.

ЗАЩИТА И БЛОКИРОВКА СЕРВЕРА API ДЛЯ Приложение

, но я хочу, чтобы пользователи могли читать данные без входа в систему. Сейчас меня беспокоит вопрос о том, как запретить другим людям использовать мой API в своих приложениях

Чтобы выполнить эти требования в своем приложении, вам необходимо найти способы защиты и блокировки вашего сервера API для обслуживания только запросов от подлинные экземпляры ваших веб-приложений и мобильных приложений.

Я должен сказать, что для мобильных приложений это может быть достигнуто с очень высокой степенью уверенности при использовании концепции аттестации мобильных приложений, но для веб-приложений мы просто можем Сделайте это наилучшим образом, используя решения для искусственного интеллекта.

Чтобы понять, как это можно сделать для веб-приложения, прочитайте этот ответ Я дал вопрос Безопасный данные API от вызовов из приложения , в частности, раздел под названием Защита API-сервера .

Для мобильного приложения вы должны прочитать этот ответ Я дал на вопрос Как обезопасить API REST для мобильного приложения? , более конкретно в разделе Защита сервера API и раздел Возможное лучшее решение .

Если вы прочитали оба ответа, которые я связал выше, теперь вы можете лучше понять, почему я первоначально сказал, что это огромная проблема .

DoS ATTACKS

Вы также обеспокоены DoS-атаками.

Обычно это не решается на уровне приложений, вместо этого его лучше всего обрабатывать на уровне инфраструктуры, как в брандмауэре, где могут применяться правила для идентификации и отбрасывания пакетов DoS, но если они слишком строгие, они также могут блокировать пользователей git, в то время как если они слишком расслаблены, они пропускают пакеты DoS. Чтобы обеспечить более эффективную защиту от атак DoS, вам нужно прибегнуть к специализированному программному обеспечению, и даже для этого может потребоваться ручное вмешательство во время масштабной атаки DoS.

Поэтому я советую начать с добавления в брандмауэр некоторых правила отбрасывания DoS-пакетов и / или если вы используете облачного провайдера, вы можете посмотреть, какой уровень защиты от DoS они могут предложить в вашей учетной записи. Например, я знаю, что некоторые провайдеры CDN до некоторой степени предлагают защиту от DoS бесплатно, поэтому, возможно, стоит подумать о том, чтобы весь трафик c проходил через CDN, что также приносит другие традиционные преимущества CDN, то есть обслуживающие активы. из ближайшего к вашим клиентам места.

ВЫ ХОТИТЕ GO ДОПОЛНИТЕЛЬНУЮ МИЛЮ?

В любом ответе на секретный вопрос я не сопротивляюсь ссылаться на отличную работу от OW ASP foundation.

Для веб-приложений

OW ASP Web Top 10 рисков

OW ASP Top 10 - мощный информационный документ по безопасности веб-приложений. Он представляет широкий консенсус в отношении наиболее критических угроз безопасности для веб-приложений. В число участников проекта входят различные эксперты по безопасности со всего мира, которые поделились своими знаниями для составления этого списка.

Руководство по тестированию веб-безопасности :

OW ASP Руководство по тестированию веб-безопасности включает в себя инфраструктуру тестирования на проникновение «передовой опыт», которую пользователи могут внедрять в своих организациях, и руководство по тестированию на проникновение «низкого уровня», в котором описываются методы тестирования наиболее распространенных веб-приложений и безопасности веб-служб. проблемы.

для мобильных приложений

OW ASP Проект Mobile Security - 10 основных рисков

OW ASP Mobile Security Project - это централизованный ресурс, предназначенный для того, чтобы предоставить разработчикам и командам безопасности ресурсы, необходимые для создания и поддержки безопасных мобильных приложений. В рамках проекта наша цель состоит в том, чтобы классифицировать риски для безопасности мобильных устройств и обеспечить средства управления развитием, чтобы уменьшить их влияние или вероятность эксплуатации.

OW ASP - Руководство по тестированию мобильной безопасности :

Руководство по тестированию безопасности мобильных устройств (MSTG) - это всеобъемлющее руководство по разработке, тестированию и реверс-инжинирингу безопасности мобильных приложений.

Для APIS

OW ASP API Security Top 10

OW ASP API Security Project стремится обеспечить ценность разработчикам программного обеспечения и оценщикам безопасности, подчеркивая потенциальные риски в небезопасных API, и иллюстрирующий, как эти риски могут быть смягчены. Для достижения этой цели проект безопасности API OW ASP создаст и будет поддерживать документ «Топ 10 угроз безопасности API», а также портал документации для рекомендаций по созданию и оценке API.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...