Разрешить перенаправления только в одном домене с mod_rewrite
Я хотел бы ограничить любые перенаправления на URL-адреса в том же приложении. Возможно ли это с помощью ISAPI Rewrite (mod_rewrite для IIS)? В основном я хочу предотвратить атаки с открытым перенаправлением.
Одним из примеров является то, где URL может исходить из строки запроса или какого-либо другого источника. Я хочу проверить, что любое использование этого URL для перенаправления разрешено только в том случае, если оно находится в том же домене. Например: Response.Redirect("some URL");
У меня есть приложение ASP.NET, работающее под управлением IIS 6.
2 ответа
Вы можете попробовать использовать следующее для проверки домена в строке запроса и показать 403 Запрещено, если это внешний домен:
RewriteBase /
RewriteCond %{QUERY_STRING} !^.*yourdomain.com.* [NC]
RewriteRule .? - [F]
Вам нужно будет выполнить эту проверку на стороне ASP.NET, чтобы не допустить перенаправления за пределы вашего домена. После того, как инструкция по перенаправлению отправлена клиенту, ваш сервер никогда не получит другого шанса войти, потому что клиент немедленно перейдет в другой домен. Если вы не управляете кодом ASP.NET этого приложения, вы можете попробовать использовать Helicon Ape (вместо ISAPI_Rewrite). Helicon Ape имеет больше функций, а также предлагает переписывание исходящих ответов, поэтому он может перехватить "перенаправленный" ответ вашего приложения перед его отправкой клиенту. Доступны два варианта: