2016-09-14 2 views
0

: 분명히XSS : 어떻게 안전합니까? 내가 다음 코드를 한

echo "<span title='{$_GET["t"]}'>Foo</span>"; 

,이 코드는 XSS-저장되지 않습니다,하지만 난 다음 URL을 호출 할 때, 어떤 자바 스크립트가 실행되지 않습니다 :

  1. url?t=Foo" onclick="alert(1)"
  2. url?t=<script>alert(1);</script>

브라우저가 마술 작업을하고 있습니까? 공격 벡터가 있습니까?

+0

는 –

+0

당신이 생성 HTML 봤어 title 속성 내에서 실행하지 않을까요? 네가 생각하는 것을 생성한다고 생각하지 않는다. –

+0

'어떤 공격 경로가 있습니까?'erm, yes - _everything_ 이것에 대해. 사용자는 맹목적으로 사용자 입력을 신뢰하고 변경없이 실행 환경에 배치합니다. 안전하다고 판단되는 것은 없습니다. – vlaz

답변

8

왜 그렇습니까? 다음 생성 될 것입니다 :

  1. <span title='Foo" onclick="alert(1)"'>Foo</span>
  2. <span title='<script>alert(1)</script>'>Foo</span>

어느 것도 유효한 HTML/자바 스크립트입니다. 첫 번째 태그는 따옴표에 불일치가 있으므로 태그가 잘못되었습니다. 두 번째 것은 javascript가 없습니다. 그것은 문자 <, s, c 등을 포함하는 제목 속성을 가지고 있습니다 ... 그건 자바 스크립트가 아닙니다. 단지 문자 일 뿐이므로 LOOKS처럼 javascript를 사용하십시오.

XSS를 삽입하려면 HAS에 올바른 코드를 입력하십시오. 그렇지 않으면 주입하는 환경에 관계없이 구문 오류 일뿐입니다. x 원본 문서를 나타내는 경우

http://example.com/script.php?t='><script>alert('1');</script><span+title=' 

어떤

<span title=''><script>alert('1');</script><span title=''>Foo</span> 
xxxxxxxxxxxxx0000000000000000000000000000000000000000000xxxxxxxxxxxx 

을 생성 할 것이며, 0는 주입 된 것을 나타냅니다

동작하는 예제가 될 것입니다.

3

만약 이것이 취약한 지 테스트하려면 작은 따옴표를 끝내고 태그를 닫으십시오. 다음 자바 스크립트를 추가하십시오. 다음과 같은 뭔가 : 두 번째 스크립트는 닫는 작은 따옴표 일치하지 않는 첫 번째 경우에

?t=xss'><script>alert('hi')</script><span 
관련 문제