aspx .net で http ヘッダー リファラーを検証するにはどうすればよいですか
-
21-08-2019 - |
質問
エラーページのリファラーに不都合なことが何も入らないようにしたいと考えています。
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 になる可能性があります。
所属していません StackOverflow