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-EScape.
사례별로 잠재적으로 위험한 캐릭터를 포함하는 블랙리스트 입력을 선택하려고 시도하는 것은 뒤로 수행하는 것입니다. 당신은 아마도 가능한 모든 공격을 포착하지 않을 것이며, 불필요하게 유효한 URL을 허용하지 않을 것입니다. ( '%3C'가있는 URL을 갖는 것은 완벽하게 합리적입니다.)
다른 팁
this.request.urlreferrer는 참조자가 제공되지 않았거나 참여하지 않은 경우 null 일 수 있습니다.
제휴하지 않습니다 StackOverflow