【发布时间】:2021-05-07 13:58:47
【问题描述】:
在 IIS 上运行的 ASP.Net 应用程序中,我配置了从 http 到 https 的 URL 重定向,以便所有客户端都通过 https 访问我的页面。 Web.config 如下所示:
<rule name="Redirect HTTP to HTTPS" stopProcessing="true">
<match url="^(.*)$" />
<conditions>
<add input="{HTTPS}" pattern="^OFF$" />
<add input="{HTTP_HOST}" matchType="Pattern" pattern="^localhost(:\d+)?$" negate="true" />
<add input="{HTTP_HOST}" matchType="Pattern" pattern="^127.0.0.1(:\d+)?$" negate="true" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="SeeOther" />
</rule>
所以基本上,任何不是来自服务器的远程请求都会被重定向到与 https 等效的 URL。
现在的问题是一些远程客户端似乎在本地调用页面。示例:http//:127.0.0.1/Default.aspx。我知道这一点是因为我从 Default.aspx 获得了如下所示的自定义日志条目:
Default.aspx.Page_Load:
Not secure: http://127.0.0.1/default.aspx -->
Secure: https://127.0.0.1/default.aspx
Client: 219.85.53.164
翻译:客户端“219.85.53.164”调用http://127.0.0.1/**default.aspx**,手动手动重定向到https。
这个远程客户端如何绕过我的 HTTP 规则并设法在本地调用 Default.aspx 不安全和(看起来)???
【问题讨论】:
-
远程客户端可以连接到您的服务器,并且在 HTTP 请求中包含
Host: 127.0.0.1行。这是我拥有的此类日志条目的唯一解释。客户端很可能是试图找到在您的服务器上运行的隐藏/非公开网站的攻击者。 -
感谢您的提示。我在 IIS 中添加了一个新的“URL 重写”规则,该规则阻止任何包含“主机”标头值和“127.0.0.1”的请求。让我们看看这是否成功。
-
我觉得可以先查看日志文件,里面会记录请求的URL和IP信息。您可以查看原始网址。还建议您启用失败的请求跟踪。如果问题再次出现,您可以在日志中找到问题的原因。
标签: asp.net redirect iis https web-config