2012-03-04 2 views
2

현재 XSS 예방에 대한 연구를하고 있지만 DOM 기반 공격에 대해 다소 혼란 스럽습니다. 주제에 대해 읽은 대부분의 논문은 값이 서버 측 코드 대신 JavaScript로 페이지에 표시되는 경우 DOM을 수정하기 위해 URL 매개 변수를 통해 JavaScript를 주입하는 예제를 제공합니다.현대적인 브라우저에서 DOM 기반 XSS 공격이 여전히 가능합니까?

그러나 모든 최신 브라우저는 JavaScript로 렌더링되는 경우 URL 매개 변수를 통해 제공된 모든 특수 문자를 인코딩하는 것으로 보입니다.

IE6과 같은 구형 브라우저가 아니라면 DOM 기반 XSS 공격을 수행 할 수 있습니까?

+1

궁금한 점이 있습니까? 왜이 질문에 투표가 내려 졌습니까? –

답변

2

절대적으로 가능합니다. 사용자가 보낸 출력을 필터링하지 않으면 해당 출력은 스크립트를 포함하여 무엇이든 될 수 있습니다. 브라우저에는 사용자가 제어하는 ​​정당한 스크립트인지 여부를 알 수있는 방법이 없습니다.

최신 브라우저의 문제는 아니지만 브라우저가 귀하의 도메인에서 온 모든 콘텐츠를 합법적 인 것으로 간주한다는 것이 기본 원칙입니다.

참으로 크로스 도메인 스크립팅 (같은 보안 결함은 항상 존재하지만) 최신 브라우저에 의해 (때로는, 항상) 차단되어 다른 측면,

+0

DOM 공격이 작동하는 방식을 약간 잘못 이해했다고 생각합니다. 내가 본 모든 예제는 URL에서 스크립트 태그를 호출하지만, 예제를 복제하려고하면 특수 문자가 인코딩됩니다. 서버 측 코드를 우회하는 DOM 기반 공격은 다른 어떤 방법으로 수행됩니까? – James

+0

다음 공격 유형을 살펴보십시오. https://www.owasp.org/index.php/DOM_Based_XSS 및이를 막는 방법 : https://www.owasp.org/index.php/DOM_based_XSS_Prevention_Cheat_Sheet –

+2

@Ofer Zelig - 이러한 링크를 살펴 보았지만 DOM 공격의 예제가 작동하지 않으면 출력은 JavaScript에 의해 자동으로 인코딩됩니다. 내가 읽은 문서에서 서버 측 예방은 DOM 기반 공격에 비효율적이라고 가정합니다. 그래서 나는 이것이 서버의 개입없이 어떻게 될 수 있는지 이해하려고 노력하고있다. – James

2

그 잊어 등 자원에 대한 제 3 자 액세스가 있습니다 old- 10 년 전부터 학교 XSS exampls. 쿼리 매개 변수에서 이스케이프 처리되지 않은 항목을 취하여 페이지를 렌더링하는 자바 스크립트를 작성한 프로그래머는 오래 전부터 해고되었거나 각도/백본과 같은 프레임 워크로 전환되었습니다.

그러나 반사/저장된 XSS는 여전히 광범위하게 존재합니다. 이를 위해서는 서버 측과 클라이언트 측 모두에서 적절한 탈출이 필요합니다. 현대 프레임 워크는 모두 HTML을 렌더링 할 때 민감한 문자를 이스케이프 처리하는 데 도움을줍니다. 예를 들어 모델 데이터에서보기를 렌더링 할 때 가능한 XSS 위협을 해결하기 위해 $ sce (엄격한 상황 별 이스케이프 처리) 서비스 (https://docs.angularjs.org/api/ng/service/ $ sce)가 있습니다. 백본 모델에는 XSS 위협 요소를 제거하는 "model.escape (attribute)"(http://backbonejs.org/#Model-escape)과 같은 메소드도 있습니다.

관련 문제