У меня есть панель администрирования веб-сайта, которую я пытаюсь ограничить только одним IP-адресом. Я использую следующий код перезаписи web.config для предотвращения доступа со всех, кроме одного IP-адреса.
<rewrite>
<rules>
<rule name="IPRestrictions" stopProcessing="true" enabled="true">
<match url="(.*)" />
<conditions>
<add input="{Allowed Ips:{REMOTE_ADDR}}" pattern="1" negate="true" />
</conditions>
<action type="CustomResponse" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden" />
</rule>
</rules>
<rewriteMaps>
<rewriteMap name="Allowed Ips">
<add key="127.0.0.1" value="1" />
<add key="XXX.XXX.XXX.XXX" value="1" />
</rewriteMap>
</rewriteMaps>
</rewrite>
Это работает отлично, за исключением случаев, когда самому сайту необходим доступ к странице или файлу внутри себя. Например, в PHP используется CURL или file_get_contents () для доступа к странице, файлу или веб-сервису. Однако это не проблема PHP, у меня есть сайт asp.net, который сталкивается с точно такой же проблемой. Когда это произошло впервые, я подумал, что это будет легко исправить, добавив 127.0.0.1 в список разрешенных IP-адресов. Однако это не сработало. Затем я попытался добавить IP-адрес веб-сайта к разрешенным IP-адресам, но это тоже не сработало.
Вот сообщение об ошибке PHP, которое я получаю:
DOMDocument :: load (/data/north-america.xml): не удалось открыть поток: сбой HTTP-запроса! HTTP / 1.1 403 Запрещено
Это имеет смысл, поскольку перезапись отправляет пользователю ошибку 403, если IP-адрес отсутствует в карте разрешенных перезаписей IP-адресов.
Я ищу корректировку, которую могу внести в код перезаписи, а не в код PHP или ASP.NET. Также мне известен раздел безопасности в web.config, я не могу использовать этот раздел из-за ограничений на мой хост.
Задача ещё не решена.
Других решений пока нет …