我要确保确保一个错误页面上没有任何不幸进入引荐。

我应该以验证HTTP报头进行检查。

下面是我当前的代码:

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

这将无法使用%3C和%3E代替<和>例如,所以我显然需要支付的HTML编码的扫描的Acunetix - ?还有什么事我是缺少

<强>更新 我可以使用下面的代码捕获所有的扫描的Acunetix:

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

解决方案

  

我要确保确保一个错误页面上没有任何不幸进入引荐。

然后总是HTML的转义任何字符串 - 包括引荐网址 - 您输出到错误页面

试图挑选出和含有上的情况下,逐个潜在危险的字符黑名单输入向后做。你可能不会捕获所有可能的攻击,你会不必要地禁止合法的URL。 (这是完全合理的,具有与在“%3C”的URL。)

其他提示

this.Request.UrlReferrer可以为空,如果没有被引荐提供或已参加。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top