문제

오류 페이지의 참조 자에 들어 가지 않도록 보장하고 싶습니다.

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 일 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top