Недавно я установил httpHandler для защиты моих HTML-файлов от непосредственного привлечения гнусных пользователей. Я никогда не делал ничего подобного раньше, и, проведя много исследований, использование httpHandler было лучшим результатом. Однако все учебники объяснили, как настроить обработчик, но затем все, казалось, закончилось чем-то вроде «Теперь просто проверьте, является ли запрос законным или нет!» не объясняя, как это можно сделать.Определите, является ли запрос легитимным в HttpHandler
Существует множество примеров того, как останавливать запросы, поступающие из других доменов, например, для остановки воспроизведения изображения. То, что я хочу сделать, это разрешить запросы на файлы HTML, созданные моим угловым слоем, но блокировать запросы, сделанные непосредственно браузером. То есть, если Angular запрашивает HTML-шаблон, он должен его получить, но если кто-то вводит «mysite.com/static/templates/template.html» в панель браузера, он должен быть заблокирован.
Решение, с которым я столкнулся, состоит в том, чтобы иметь угловую отправку настраиваемого заголовка с каждым запросом; httpHandler затем ищет наличие этого заголовка и возвращает HTML-файл, если заголовок присутствует. Таким образом, если запрос не исходит из Угловой экосистемы, он не имеет заголовка и получает отскок. Существуют две проблемы с этим методом:
Немного хрупкий. У нас были (по общему признанию, редкие) сообщения от пользователей, которые блокировались, когда им этого не было, и я не смог определить, почему это происходит.
Это не работает, скажем, для файлов javaScript. Файлы JS не загружаются одинаково, поэтому я не могу защитить их таким же образом.
Есть ли лучший способ сообщить, пришел ли запрос непосредственно из панели браузера или законно из моего пользовательского интерфейса?
Передний конец угловой, задний конец - .NET 4.5.