2016-07-17 8 views
1

이 질문은 페이지를 새로 고치는 방법으로 window.location = window.location 코드와 관련이 있으며 리디렉션/기타 변수와 관련이 없습니다. 다음과 같이window.location = window.location이 XSS의 영향을 받습니까

나의 이해는 다음과 같습니다 브라우저가 사용자가 이미 동일한 위치로 이동하므로

window.location = window.location이 페이지가 새로 고침됩니다.

DOM 조작을 통해이 변수를 변경하면 페이지가 다시로드되거나 공격자 페이지가로드되므로 변경된 값으로 이러한 행을 실행할 수 없으므로 크로스 사이트 스크립팅 공격의 대상이 아닙니다.

이 정보가 맞습니까?

편집 : window.location = window.location 호출이됩니다 다음 경우, 브라우저는 다른 위치로 전송 될 수 있도록, 페이지 새로 고침을 유발하지 않고 window.location를 변경하는 방법이 있는지 내가 정말 부탁 해요 것은.

+0

누군가 콘솔을 열고 임의의 자바 스크립트 코드를 입력하면 어떻게 될까요? 있다면 귀하의 사이트가 취약합니다. – Gogol

+0

이 작업을 'window.location = window.location'하고 페이지를 다시로드하면 ... 같은 일이 다시 발생하고 무한 루프가 시작됩니다. –

+0

@ Al.G. 나는 이것이 페이지로드시 호출되지 않을 것이라고 가정하는 것이 합리적으로 안전하다고 생각한다. – charlietfl

답변

1

이 문제는 window.location과는 관계가 없으며 새로운 컨텍스트에서 사용되는 임의의 데이터를 처리하는 방법과 관련이 있습니다.

URL에서 입력을 받아 리디렉션 할 새 URL을 작성하면 문제가 발생합니다. 다음 쿼리 문자열 매개 변수 url의 값으로 window.location을 설정하는 페이지에 자바 스크립트가 있다면 ...

http://example.com/redirect?url=http%3A%2F%2Fsomethingevil 

을 고전 리디렉션 페이지를 가지고, 다음 페이지는 http://somethingevil로 이동합니다.

XSS의 주요 방법은 쿼리 문자열 매개 변수가 페이지 자체에 데이터를 주입하도록 허용하는 것입니다. 예를 들어, "Brad"가 name이라는 URL 매개 변수에서 나온 "Hello Brad"라는 페이지가있을 수 있습니다. 이제 공격자가 대신 URL을 name=%3Cscript%20src%3D%22http%3A%2F%2Fexample.com%2Fevil.js%22%3E%3C%2Fscript%3E으로 설정한다고 가정합니다. 방금 name 값을 페이지에 직접 삽입하면 내 스크립트 evil.js이 해당 페이지에서 실행됩니다. 대신 데이터를 올바르게 이스케이프 처리하면 텍스트로 해석되므로 페이지에서 사용할 수 있습니다.

+0

내가 정말로 묻는 것은 'window.location = window.location' 호출이있을 때 브라우저가 다음 페이지로 보내질 수 있도록 페이지를 다시로드하지 않고'window.location'을 변경하는 방법이 있는지입니다. 다른 위치. – Milk

+0

@ 우유 이해가 안 되니? 왜이 작업을 수행하고 XSS와 관련이 있습니까? – Brad

+1

DOM 조작을 통한 교차 사이트 스크립팅의 잠재적 악용으로 보안 스캔을 통해 문제의 코드 줄이 제기되었습니다. 나는이 방법으로 그 라인을 악용 할 수 있다고 믿지 않았다. 따라서 질문. – Milk