защищенные данные API от звонков из приложения - PullRequest
0 голосов
/ 10 апреля 2020

Предположим, у нас есть конечная точка API (например, REST) ​​и реагирующее веб-приложение для его подключения

Это то, что я делаю для аутентификации и авторизации

Когда пользователь отправляет запрос на вход, я создайте токен (например, JWT) для этого пользователя, а затем пользователь сможет отправлять запросы или запросы на мутацию с этим токеном

enter image description here

Для этого я сохраняю токен в localStorage или файлах cookie и пользователь self может видеть его

Для простого приложения это нормально, но если я хочу, чтобы даже пользователь не смог использовать этот токен, и токен работает только в моем приложении реакции (на моем веб-сайте). )?

Например, если Джон Доу посетил веб-сайт, и веб-сайт создал для него токен, он может скопировать этот токен и использовать его в стороннем приложении или создать бота для вызова API этого веб-сайта

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

Некоторые приложения делают это, но я не знаю, как, например телеграмма или твиттер или ...

Их данные, которые возвращаются с сервера, зашифрованы

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

Я читал о RSA, но если мы сохраним ключ publi c во внешнем интерфейсе, это не будет иметь никакого значения (верно? )

Так как же это сделать? (защита API от вызова веб-приложения c)

1 Ответ

1 голос
/ 13 апреля 2020

ПРОСТЫЕ ПРИЛОЖЕНИЯ

Для простого приложения это нормально

Это зависит от данных, которые вы предоставляете через это простое приложение, потому что в Европе, например, закон о ВВПР очень строго для тех, кто попадает в ситуацию с утечкой данных для личной информации (PII) из-за отсутствия мер безопасности, а сложность приложения не имеет значения для закона. Так что будь это простое или сложное приложение, если вы имеете дело с PII, обязательно применяйте все лучшие методы обеспечения безопасности в вашем приложении.

ВЫЗОВ

но что если я хочу даже если пользователь не сможет использовать этот токен, и токен будет работать только в моем приложении реакции (на моем веб-сайте)?

Что ж, вы купили себе очень сложную задачу, которую нужно решить, и это требует Publi c природа создания сети, потому что в браузере вы можете просто нажать F12 или проверить источник страницы, чтобы получить секреты, захватить куки, посмотреть, что хранится в локальной базе данных, и т. д. c ..

Кто против Что такое Доступ к API-серверу

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

Прежде чем вы сможете приступить к решению этой огромной задачи, вы должны четко понять разницу между who и чем вызывает ваш сервер API, и для этого вы можете прочитать эту статью раздел, который я написал, откуда я цитирую это:

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

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

Если эта цитата недостаточно ясна, чем go и потратить некоторые секунд, чтобы прочитать весь раздел в связанной статье.

Теперь, когда у вас есть четкое представление о who (Джо) и what (Стороннее приложение, бот, Postman, cURL, et c.) Получает доступ к вашему API-серверу, вы можете начать применять столько уровней защиты, сколько можете себе позволить и которые требуются по закону для ваших данных.

ЗАЩИТА СЕРВЕРА API

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

Как и средневековые замки, защита API выполняется в слоях :

  • Безопасный транспортный уровень с использованием только HTTPS, и вы можете сделать это бесплатно с LetsEncrypt .
  • Добавить заголовки безопасности , проверьте их с помощью tool и включите report uri , чтобы они в реальном времени знали о нарушениях, происходящих в браузере.
  • JWT-зашифрованные токены (* 1070) * JWE ) по предпочтению или по крайней мере со знаком токенов ( JWS )
  • Запутывайте ваш Javascript хотя бы с помощью инструментов с открытым исходным кодом, например javascript -obfuscator .
  • Подпишите запрос с помощью HMA C и воспользуйтесь API веб-криптографии , чтобы помочь вам в этом.
  • Используйте reCAPTCHA V3 от Google или аналогичный инструмент от другого поставщика. Этот тип recaptcha не требует взаимодействия с пользователем.
  • Брандмауэр веб-приложений ( WAF ) перед вашим сервером API.
  • Аналитика поведения пользователя ( UBA ), который будет использовать Искусственный интеллект (ИИ), чтобы попытаться отделить , кто от , что .

Так что же такое способ сделать это? (защита API от вызова веб-приложения c)

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

Some of the applications are doing this but I don't know how, for example telegram or twitter or ...

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

Таким образом, в конечном итоге все сводится к тому, чтобы взломать больше времени ваш API-сервер и приложение React, чтобы удержать обычных сценаристов и менее опытных хакеров, потому что они просто преследуют легкие цели, то есть низко висящие фрукты. Имейте в виду, что опытные хакеры всегда найдут выход, но они ищут высоко ценные цели, то есть фрукты на вершине дерева, которые нелегко достать даже с лестницы;).

ПОЛУЧЕНИЕ ДОПОЛНИТЕЛЬНОЙ МИЛИ

Если вы хотите, чтобы go был полностью заряжен для защиты вашего API-сервера, тогда вам нужно следовать проектам OW ASP:

OW ASP API Security Top 10

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

Таким образом, вы хотите убедиться, что в вашем API нет общих уязвимостей TOP 10.

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

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

Использование позволит вам идентифицировать все векторы атак и укрепить ваш сервер API и веб-приложение будет сложнее взломать, но, к сожалению, никогда не будет невозможно сделать это.

ССЫЛКИ ССЫЛКИ

LetsEncrypt :

* 1144 Let's Encrypt - это бесплатный, автоматизированный и открытый центр сертификации (CA), работающий на благо общественности. Это услуга, предоставляемая Inte rnet Исследовательской группой по безопасности (ISRG).

Мы даем людям цифровые сертификаты, которые им необходимы для включения HTTPS (SSL / TLS) для веб-сайтов, бесплатно, в самый удобный способ, которым мы можем. Мы делаем это потому, что хотим создать более безопасный и уважающий конфиденциальность веб-сайт.

Онлайн-инструмент заголовков безопасности

Есть сервисы это будет анализировать заголовки HTTP-ответов других сайтов, но я также хотел добавить систему оценок к результатам. Заголовки HTTP-ответов, которые анализирует этот сайт, обеспечивают огромный уровень защиты, и важно, чтобы сайты их развертывали. Надеемся, что, предоставив простой механизм их оценки и дополнительную информацию о том, как развернуть отсутствующие заголовки, мы сможем увеличить использование заголовков на основе безопасности в Интернете.

Report URI

Мы - лучшая платформа для мониторинга в режиме реального времени для самых современных веб-стандартов. Наш опыт, целеустремленность и осведомленность позволяют нам не только собирать, обрабатывать и понимать отчеты, но и предоставлять вам только необходимую информацию. Знаете ли вы, что браузеры ваших клиентов могут автоматически отправлять вам все виды полезной информации о профиле безопасности вашего сайта?

JWE

JSON Web Encryption (JWE) - это стандарт IETF, обеспечивающий стандартизированный синтаксис для обмена зашифрованными данными на основе JSON и Base64. [1] Это определено RFC7516. Наряду с JSON Web Signature (JWS) это один из двух возможных форматов JWT (JSON Web Token). JWE является частью набора протоколов JavaScript Object Signing and Encryption (JOSE). [2]

JWS

A JSON Web Signature (сокращенно JWS) - это предложенный IETF стандарт (RF C 7515) для подписания произвольные данные. [1] Он используется в качестве основы для различных веб-технологий, включая JSON Web Token.

API веб-криптографии

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

Google reCAPTCHA V3 :

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

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

WAF - брандмауэр веб-приложений :

Брандмауэр веб-приложений (или WAF) фильтрует, отслеживает и блокирует трафик HTTP c в веб-приложение и из него. WAF отличается от обычного брандмауэра тем, что WAF может фильтровать содержимое определенных c веб-приложений, в то время как обычные брандмауэры служат в качестве шлюза безопасности между серверами. Проверяя трафик HTTP c, он может предотвратить атаки, связанные с безопасностью веб-приложения fl aws, такие как внедрение SQL, межсайтовый скриптинг (XSS), включение файлов и неверные конфигурации безопасности.

UBA - Аналитика поведения пользователя :

Аналитика поведения пользователя (UBA), как определено Gartner, представляет собой процесс кибербезопасности с обнаружением внутренних угроз, целевых атак и финансового мошенничества. , Решения UBA рассматривают модели поведения людей, а затем применяют алгоритмы и статистический анализ для выявления значимых аномалий из этих моделей - аномалий, которые указывают на потенциальные угрозы. Вместо отслеживания устройств или событий безопасности, UBA отслеживает пользователей системы. Платформы больших данных, такие как Apache Had oop, расширяют функциональность UBA, позволяя им анализировать данные объемом в петабайты для обнаружения внутренних угроз и расширенных постоянных угроз.

...