【问题标题】:HttpRequest Host VulnerabilitesHttp 请求主机漏洞
【发布时间】:2021-11-12 15:12:42
【问题描述】:

关于从 HttpRequest 的主机属性中提取域名的任何安全漏洞,我想请教您的建议?

我使用多租户的 ASP.NET Core 开发了一个 PWA,我从用于在数据库中查找信息的主机 (HttpRequest.Host) 中提取域(即租户)名称。

例如,如果我有一个类似www.JoeBloggs.com 的 URL,则提取的域将是“JoeBloggs”。然后,我使用它检索该租户所需的信息。

信息始终通过 HTTPS 连接发送。

如果我将域名用作数据库查找的一部分,主机值是否会被伪造或可能用于 SQL 注入攻击?

谢谢,前进。

【问题讨论】:

    标签: sql security httprequest code-injection host


    【解决方案1】:

    从历史上看,存在大量 HTTP Host header attacks,其中目标 Web 服务器隐式信任 Host 标头值,而没有/不正确的白名单检查或清理。简而言之,可以在某些上下文/配置中伪造此值。

    关于 SQL 注入的问题,您应该已经使用准备好的语句和参数化查询来降低此类风险;如果您还没有这样做,那么您绝对应该努力重构您的 SQL 交互代码。即使恶意客户端发送的 Host 值旨在利用 HTTP 服务器下游某处的 SQL 注入漏洞,这样的值也不应该能够触发任何意外的功能或数据泄露,因为通过以下方式传递给查询字符串的参数是准备好的语句/参数化查询等机制不能解释为 SQL 语句。

    与此相关,如果您使用 Host 标头的值来确定客户端是否应该在来自您的服务器的响应中接收任何类型的“特权”信息 - 不要Host 标头值几乎不是正确身份验证/授权流程的替代品,绝对不应该这样使用,因为它可以被相当简单地操纵。您当然可以将它与其他更安全的身份验证/授权方法结合使用,但单独使用它是一个很大的安全禁忌。

    此建议不排除在您的数据库、数据库驱动程序或堆栈中检查Host 标头内容的任何其他地方存在单独的可利用缺陷/错误。

    【讨论】:

    • 感谢您的建议!
    猜你喜欢
    • 2017-09-12
    • 2015-07-24
    • 1970-01-01
    • 2019-05-10
    • 2021-08-21
    • 1970-01-01
    • 2018-12-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多