2

エラーページのリファラーに不都合なものが入らないようにしたい.

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))
{
4

2 に答える 2

1

エラーページのリファラーに不都合なものが入らないようにしたい.

次に、エラー ページに出力するすべての文字列 (リファラー URL を含む) を常に HTML エスケープします。

ケースバイケースで潜在的に危険な文字を含む入力を選択してブラックリストに載せようとするのは、逆のことです。考えられるすべての攻撃をキャッチできるわけではなく、有効な URL を不必要に禁止することになります。('%3C' を含む URL を使用することは完全に合理的です。)

于 2009-03-24T15:28:28.120 に答える
0

リファラーが提供されていないか参加していない場合、this.Request.UrlReferrer は null になる可能性があります。

于 2009-03-24T12:40:33.830 に答える