aspx .net で http ヘッダー リファラーを検証するにはどうすればよいですか

StackOverflow https://stackoverflow.com/questions/677116

質問

エラーページのリファラーに不都合なことが何も入らないようにしたいと考えています。

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))
{
役に立ちましたか?

解決

エラーページのリファラーに不都合なことが何も入らないようにしたいと考えています。

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

潜在的に危険な文字を含む入力をケースバイケースで選び出してブラックリストに登録しようとすることは、逆行していることになります。おそらく、考えられるすべての攻撃をキャッチできるわけではなく、有効な URL を不必要に拒否することになります。(URL に「%3C」が含まれるのは完全に合理的です。)

他のヒント

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top