Asp.net 我们应该如何在aspx.net中验证http头引用器

Asp.net 我们应该如何在aspx.net中验证http头引用器,asp.net,validation,referrer,http-referer,Asp.net,Validation,Referrer,Http Referer,我想确保在错误页面上没有任何不良信息进入推荐人 为了验证http头,我应该检查什么 以下是我目前的代码: // Ensure the referrer header is good if (this.Request.UrlReferrer.IsWellFormedOriginalString() && this.Request.UrlReferrer.Host.Equals(this.Request.Url.Host)) { 这将使使用%3C和%3E而不是的acunet

我想确保在错误页面上没有任何不良信息进入推荐人

为了验证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))
{

如果未提供或参与任何推荐人,则this.Request.urlReferer可能为空

我想确保在错误页面上没有任何不良信息进入推荐人

然后总是对任何字符串进行HTML转义 — 包括推荐人URL — 输出到错误页面的


试图在个案的基础上挑出包含潜在危险字符的输入并将其列入黑名单,这是一种倒退。您可能无法捕获所有可能的攻击,并且不必要地不允许使用有效的URL。(有一个包含“%3C”的URL是完全合理的。)

true-我没有在这里包含完整的代码,但在我找到上面的代码之前,我会检查null