Разрешить перенаправления только в одном домене с 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 имеет больше функций, а также предлагает переписывание исходящих ответов, поэтому он может перехватить "перенаправленный" ответ вашего приложения перед его отправкой клиенту. Доступны два варианта:

Другие вопросы по тегам