【问题标题】:how should we validate http header referrer in aspx .net我们应该如何在 aspx .net 中验证 http 标头引荐来源网址
【发布时间】:2010-10-15 04:41:39
【问题描述】:

我想确保在错误页面上没有任何不妥之处进入引荐来源网址。

为了验证 http 标头,我应该检查什么。

下面是我当前的代码:

// Ensure the referrer header is good
if (this.Request.UrlReferrer.IsWellFormedOriginalString() &&
    this.Request.UrlReferrer.Host.Equals(this.Request.Url.Host))
{

这将导致使用 %3C 和 %3E 而不是 的 acunetix 扫描失败,因此我显然需要涵盖 html 编码 - 还有什么我遗漏的吗?

更新 我可以使用以下代码捕获所有 acunetix 扫描:

if (this.Request.UrlReferrer.IsWellFormedOriginalString() &&
    this.Request.UrlReferrer.Host.Equals(this.Request.Url.Host) &&
    !Regex.IsMatch(this.Request.UrlReferrer.ToString(),
                   "%3C",
                   RegexOptions.IgnoreCase))
{

【问题讨论】:

    标签: asp.net validation referrer http-referer


    【解决方案1】:

    我想确保在错误页面上没有任何不妥之处进入引荐来源网址。

    然后始终对您输出到错误页面的任何字符串进行 HTML 转义 — 包括引荐来源网址 — 。

    尝试逐个选择包含潜在危险字符的输入并将其列入黑名单是在倒退。您可能无法捕获所有可能的攻击,并且您将不必要地禁止有效 URL。 (在 URL 中包含“%3C”是完全合理的。)

    【讨论】:

      【解决方案2】:

      this.Request.UrlReferrer 可能为 null,如果没有提供或参与的推荐人。

      【讨论】:

      • true - 我没有在这里包含完整的代码,但我会在到达上面的代码之前检查 null
      猜你喜欢
      • 2021-05-11
      • 2011-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-03
      • 2011-05-14
      • 1970-01-01
      相关资源
      最近更新 更多