Назад | Перейти на главную страницу

Разрешить запросы только для определенного реферера в домене

рассмотрите следующий сценарий:

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

Допустим, домен - example.com, а веб-страница - example.com/page. Любой из них не должен работать, например example.com, example.com/other. Только example.com/page должен иметь доступ.

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

Я хочу разрешить доступ к API только этой веб-странице. Никаких других страниц в домене.

То, что вы описываете, лучше всего реализовать в виде белого списка HTTP Referer [sic] на стороне api. Заголовок Http Referer описывает ссылающийся сайт, и браузер будет рекламировать его по умолчанию, но имейте в виду, что заголовок предоставляется клиентом, поэтому, хотя это остановит наивных веб-пользователей от попадания в ваш API с разных сайтов, если сам пользователь заинтересован достигают api с сайта, они могут тривиально подделать заголовок http Referer.

Единственный реальный способ защитить API от незаконного использования - это обеспечить аутентификацию и авторизацию на сервере API. Даже в этом случае любой авторизованный cna предоставляет те же учетные данные в вызове api с поддельным заголовком http. Таким образом, в конце концов, вы не можете остановить мотивированную сторону от доступа к API без использования сайта. Тем не менее, современные веб-сайты обычно не беспокоятся об этом - они сосредотачиваются на том, чтобы убедиться, что они используют CORS для защиты от атак межсайтового сценария на неизвестных пользователей, и сосредотачиваются на аутентификации и авторизации для блокировки злоумышленников, которые просто подделывают все, что предоставлено клиентом.

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

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