无效的 URI:无法通过我们的自定义重写 IHttpModule 解析主机名
Posted
技术标签:
【中文标题】无效的 URI:无法通过我们的自定义重写 IHttpModule 解析主机名【英文标题】:Invalid URI: The hostname could not be parsed via our custom rewrite IHttpModule 【发布时间】:2020-01-11 06:12:59 【问题描述】:这是我们网站上偶尔看到的一个奇怪错误。
这个错误的奇怪之处在于它被抛出在我们重写 IHttpModule 的 URL 中。有问题的行是:
var host = context.Request.Url.Host;
如果我在抛出此异常时记录context.Request.Url
,则它是一个空字符串。
这种重写方法只能通过我们的global.asax
文件调用:
void Context_AuthorizeRequest(object sender, EventArgs e)
=> URLRewriting.Process();
什么可能导致Request.Url.Host
为空?
附带说明,我们发现网站上发现了许多其他错误,这表明有人正在使用自动化工具扫描我们的网站以发现弱点和漏洞。我觉得这可能有某种关联,尽管我不确定为什么 Request.Url.Host
会一直为空。
其次,发出最后一个请求的用户 IP 是大学网络(对于我们的网站来说并不罕见)。
【问题讨论】:
【参考方案1】:我会关注context.Request.Url
是空的这一事实。
您是否还有其他 IHttpModule
s 可以在管道早期使用 HttpContext
?
是否可能存在相对 HTTP 请求,如 here 所述?
当主机和 URL 为空时,您对请求有更多了解吗?
【讨论】:
我们在整个解决方案(重写器)中只有一个IHttpModule
。我会尝试添加更多日志记录。【参考方案2】:
可能是您的重写模块无法映射的无效 URL? 根据this,如果rewrite map没有映射请求的规则,默认会得到一个空字符串。
如果您已经捕获了导致错误的原始请求,您可能能够复制它并逐步通过您的代码来验证这个理论。
【讨论】:
以上是关于无效的 URI:无法通过我们的自定义重写 IHttpModule 解析主机名的主要内容,如果未能解决你的问题,请参考以下文章
我可以编辑我的 .htaccess 来编写一些 WordPress URL(自定义重写)吗?