CORS
Я построил API get REST в python с флягой. Я вызываю этот API со своего собственного веб-сайта и хотел бы, чтобы другие веб-сайты не использовали его.
Рекомендация Роберта Путта по использованию пакета Flask CORS является правильной для решения этой проблемы, но он сам отметил, что это не помешает другим использовать ваш API, что приведет нас к вашему следующему вопросу, который я попробую обратиться более подробно.
API Злоупотребление
Этого достаточно, чтобы другие не использовали мой API?
Краткий ответ - НЕТ, потому что ваш API можно использовать многими другими способами, например, с помощью Postman, автоматических скриптов или с помощью ботов, и это лишь некоторые из них.
Обычными шагами для защиты API является использование секретов в форме токенов, таких как ключ API для идентификации того, что выполняет запросы, так называемое веб-приложение или мобильное приложение, и токен аутентификации пользователя для идентификации пользователя, выполняющего запрос, но оба они обречены на то, чтобы их можно было легко извлечь из их первоначального объема использования и использовать взломщиками вместо этого в автоматизированных сценариях или вручную в таких инструментах, как Postman. Это легко сделать на устройствах, которые злоумышленник контролирует, но это также можно сделать с помощью бесплатных wifi-порталов, работающих на ноутбуке злоумышленника. Когда злоумышленники используют метод бесплатного портала Wi-Fi в аэропортах, на железнодорожных / автобусных станциях и в других общественных местах, они обманом заставляют пользователя установить собственный сертификат, который позволит ему расшифровывать все соединения https, таким образом получая доступ к своим токенам, таким образом возможность выполнять вызовы к серверу API от их имени и без их ведома, и это будет сделано, когда пользователь сможет нормально просматривать сайт.
Так что все, что работает на стороне клиента и нуждается в некотором секрете для доступа к API, обречено на злоупотребление несколькими способами, и вы можете узнать больше о этой серии статей о технологиях безопасности мобильных API. В этой статье вы узнаете, как можно использовать ключи API, токены доступа пользователей, HMAC, TLS Pinning для защиты API и как их можно обойти. Статьи в большей степени касаются API для мобильного приложения, но они хорошо иллюстрируют, почему вы не можете эффективно защитить свой API в контексте веб-приложения, вы можете только усложнить его.
В качестве заключительного замечания я бы порекомендовал вашему веб-приложению также использовать CSP header , который позволит вам настраивать политики безопасности контента с сообщениями о нарушениях в режиме реального времени.