Рейтинг:0

Как ограничить доступ к API к порталу, работающему в браузере через Nginx

флаг lk

Сценарий

У меня есть система с сервером API и внешним интерфейсом (статический веб-сайт, работающий в браузерах), и они общедоступны под двумя доменными именами a.example.com и a-api.example.com.

Вопрос

Как мне ограничить доступ к моему API на a-api.example.com только моим внешним интерфейсом (например, никто не может произвольно завиток к нему и иметь доступ)? Или это вообще возможно?

Если бы вы могли добавить образец блока nginx, это было бы здорово.

Рейтинг:1
флаг us

Вы не можете полностью заблокировать вызовы curl.

Однако вы можете сделать их более сложными, потребовав, чтобы заголовок реферера HTTP был установлен в API. Ты можешь использовать Модуль реферера HTTP nginx за это. Пример конфигурации:

сервер {
    действительные_рефереры a-api.example.com;

    если ($invalid_referer) {
        вернуть 403;
    }
}

Это не повышает безопасность вашего сайта. Злоумышленнику несложно добавить требуемый HTTP-заголовок при отправке запросов к a-api.example.com.

Поэтому важно, чтобы в вашей реализации API использовались лучшие практики безопасности.

Ответить или комментировать

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