2012-02-03 1 views
10

HTML 컨텍스트에서 XSS를 사용하여 이스케이프하고 싶습니다. 지금까지 <,> 및 문자를 처리했습니다. 앰퍼샌드를 이스케이프하는 것이 좋지만 왜 그렇습니까? (html을 유효하게 유지하는 것 이외에는 내가 <을> 탈출 할 때 는 "누군가는 앰퍼샌드는 여전히 HTML 문맥에 XSS 공격을 허용하는 방법을 보여줍니다 수 :XSS (Cross Site Scripting) : 앰퍼샌드를 벗어나야합니까?

그래서 내가 무엇을 요구하고있다)의이이 문제가 아니라고 가정하자?

건배! 당신이 URL에 PARAMS을 연결하는 &를 사용

답변

6

정말 보셔야합니다. OWASP XSS 예방 접종 서류.

다른 방어를 피하기 위해 &을 피해야합니다. 이 코드를 고려하십시오. ", <을

<button onclick="confirm('Do you really want to delete <%= data_from_user; %> ?'">Delete</button> 

onclick 이벤트 핸들러 내부에 XSS 방어하기 위해, 개발자가 탈출 '을하고> data_from_user에 모든 것이 괜찮다는 생각 문제는 공격자 유형 &#39; 통과하는 경우 그 탈출,하지만 공격자가 자바 스크립트를 실행할 수 끝 여기

예 :.. 자신의 견해를 설명해야 다운 유권자 http://erlend.oftedal.no/blog/?blogid=124

+0

재미있는 예를 들어, 환호를 내가 뭘하려합니다.! 주사하는 것 HTML에이 : < 스크립트 유형 = "텍스트/자바 스크립트"실행되지 않습니다 > 이 howerver로 표시 "<스크립트 ..."링크 된 예에서, 공격자가 '';을'입력으로 설명되지 않은 것을 –

+0

주 공격자가'Joe '라고 타이핑 한 것으로 알려짐); alert ('XSS'와 그 사이트는'Joe '); alert (' XSS')는 이스케이프가 올바르지 않은데, 이는 HTML까지 이스케이프 처리했기 때문입니다. 우려했지만 아포 스트로피는 여전히 JS 엔진으로 전달되었습니다. "&"가 통과하는 것이 허용되면 공격자가 직접 입력 할 수 있지만 여기에 초점을 맞추는 문제는 (OWASP XSS 예방 치트 시트에서 언급했듯이) 이벤트 처리기 속성 텍스트는 * JS * - 이스케이프 (\ xHH). –

+0

... OWASP XSS 예방 치트 시트는 실제로 ASCII 값이 <256 인 모든 비 ** 영숫자 문자를 이스케이프 처리 \ xHH합니다 (https://www.owasp.org/index.php/). XSS_ % 28Cross_Site_Scripting % 29_Prevention_Cheat_Sheet # RULE_.233 _-_ JavaScript_Escape_Before_Inserting_Untrusted_Data_into_JavaScript_Data_Values) 부주의 한 개발자가 따옴표 붙지 않은 속성을 어딘가에서 사용하는 경우에 대비해. –

1

:
스크립트 코드를 웹 페이지 피해자에

http://mybank.com/page?message= < 스크립트 SRC = "를 반영하는 URL에 주입 : XXS 반영

evil _script.js "/>

+2

나는이 답변에 동의 한 – tusar