Как запретить другим пользователям использовать ваш веб-API, кроме пользователей вашего приложения? - PullRequest
0 голосов
/ 13 июля 2020

Пользователям моего приложения не нужно регистрироваться или делать что-то подобное, и они могут использовать приложение, как только установят его на свой телефон.

Как я могу запретить другим использовать мой Интернет apis / services и ограничить его только моим приложением?

Чтобы дать более конкретный пример, допустим, я использую службу базы данных Firebase Realtime. Как я могу запретить другим использовать эту службу от моего имени?

1 Ответ

1 голос
/ 21 июля 2020

Контекст

Как я могу запретить другим использовать мои веб-API / службы и ограничить их только моим приложением?

Вы упоминаете web здесь и в теги для этого вопроса, но не ясно, что вы имеете в виду веб-приложение или мобильное приложение.

Пользователям моего приложения не нужно регистрироваться или делать что-то подобное, и они могут использовать приложение, как только они установят его на свой телефон.

Сформируйте это Я предполагаю, что ваше приложение является мобильным приложением, из-за этого предложения: они могут использовать приложение как как только они установят его на свой телефон , и предполагая, что когда вы ссылаетесь на my web apis / services , вы действительно имеете в виду REST API и сторонние сервисы, такие как Firebase, о которых вы также упоминаете в вопросе.

Разница между КТО и ЧТО имеет доступ к серверу API

Как я могу запретить другим использовать мои веб-API / службы и ограничить их только моим приложением?

По другим вы, кажется, имеете в виду другое человеческое существо, who в запросе, но вы можете вместо этого указать , какое программное обеспечение / скрипт / бот пытается использовать мои веб-API / сервисы.

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

Я написал серию статей об API и безопасности мобильных устройств, а также в статье Почему вашему мобильному приложению нужен ключ API? вы Я go более подробно о разнице между who и what обращается к вашему серверу API, но я извлечу здесь основные моменты:

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

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

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

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

Блокировка API / УСЛУГ

Для сервера API

Как я могу запретить другим использовать мои веб-API / сервисы и ограничить их только моим приложением?

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

ПРИМЕЧАНИЕ: На тот случай, если у вас действительно есть веб-приложение, а не мобильное приложение, я рекомендую вам вместо этого прочитать этот другой ответ Я дал на вопрос Как защитить собственный сервер nd API, который обслуживает только мой интерфейс? и прочтите раздел Возможные решения .

Для Firebase

Чтобы дать более конкретный пример , допустим, я использую службу базы данных Firebase Realtime. Как я могу запретить другим использовать эту услугу от моего имени?

Я не эксперт в Firebase, поэтому я укажу вам на этот ответ на вопрос Блокировка доступа к базе данных Firebase для определенных c приложений .

Мне кажется, что безопасность Firebase реализована вокруг правил безопасности и аутентификации пользователя :

Обычным первым шагом в защите вашего приложения является идентификация вашего пользователей. Этот процесс называется аутентификацией. Вы можете использовать Firebase Authentication, чтобы пользователи могли входить в ваше приложение.

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

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

Так что это может быть вашим лучшим шансом go с с точки зрения блокировки вашего мобильного приложения с помощью Firebase.

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

При применении правил безопасности вы можете принять во внимание страницу устранения незащищенности и использовать Firebase Simulator для проверки различных правил.

Хотите ли вы go дополнительную милю ?

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

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

OW ASP Mobile Security Project - 10 основных рисков

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

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

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

Для APIS

OW ASP Топ 10 по безопасности API

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

...