πŸ”

배포 μ „ 톡합 JS 검증

μ‹€μ œ λ Œλ”λ§ β†’ JS μΆ”μΆœ β†’ Node.js 검사 + 버그 νŒ¨ν„΄ μŠ€μΊ” β†’ 영ꡬ μ €μž₯
β–Ά 검사 싀행← μ–΄λ“œλ―Ό

🚨 배포 쀑지 - 문제 발견

2026-09-09 23:33:50 | 버전 50287c13f7

πŸ“„ νŽ˜μ΄μ§€λ³„ JS 검사

νŽ˜μ΄μ§€κ²°κ³ΌJSμ€„μˆ˜μ˜€λ₯˜
admin (/admin)βœ… PASS5542쀄-
brands (/brands)⚠️0μ€„ν…œν”Œλ¦Ώ μΆ”μΆœ 였λ₯˜(λ¬΄μ‹œ κ°€λŠ₯): unterminated triple-quoted string literal (detected at line 2) (, line 1)
blog (/blog)⚠️0μ€„ν…œν”Œλ¦Ώ μΆ”μΆœ 였λ₯˜(λ¬΄μ‹œ κ°€λŠ₯): unterminated triple-quoted string literal (detected at line 2) (, line 1)
런처 (/launcher)βœ… PASS1004쀄-
경비관리 (/expenses)βœ… PASS2746쀄-

πŸ” 버그 νŒ¨ν„΄ μŠ€μΊ” (70건)

μ‹¬κ°λ„νŒ¨ν„΄μœ„μΉ˜μ½”λ“œμˆ˜μ •λ°©λ²•
πŸ”΄ μœ„ν—˜onclick= 속성L4364el.onclick = function(){} 별도 λΆ€μ°©
πŸ”΄ μœ„ν—˜onclick= 속성L4397el.onclick = function(){} 별도 λΆ€μ°©
πŸ”΄ μœ„ν—˜onclick= 속성L17911
el.onclick = function(){} 별도 λΆ€μ°©
πŸ”΄ μœ„ν—˜onclick= 속성L17915
el.onclick = function(){} 별도 λΆ€μ°©
πŸ”΄ μœ„ν—˜onclick= 속성L18012wrap.innerHTML = '
⚠️ μ—°κ²° 였λ₯˜
πŸ”';
el.onclick = function(){} 별도 λΆ€μ°©
πŸ”΄ μœ„ν—˜onclick= 속성L18292if (amzVal) amzHtml += 'el.onclick = function(){} 별도 λΆ€μ°©
πŸ”΄ μœ„ν—˜onclick= 속성L18381+ 'el.onclick = function(){} 별도 λΆ€μ°©
πŸ”΄ μœ„ν—˜onclick= 속성L18616
el.onclick = function(){} 별도 λΆ€μ°©
πŸ”΄ μœ„ν—˜onclick= 속성L18641el.onclick = function(){} 별도 λΆ€μ°©
πŸ”΄ μœ„ν—˜onclick= 속성L18669
μ €μž₯
el.onclick = function(){} 별도 λΆ€μ°©
πŸ”΄ μœ„ν—˜onclick= 속성L18682el.onclick = function(){} 별도 λΆ€μ°©
πŸ”΄ μœ„ν—˜onclick= 속성L19203el.onclick = function(){} 별도 λΆ€μ°©
πŸ”΄ μœ„ν—˜onclick= 속성L19208el.onclick = function(){} 별도 λΆ€μ°©
πŸ”΄ μœ„ν—˜onclick= 속성L19386
πŸ’Ό μ „λ¬Έμ μœΌλ‘œ
el.onclick = function(){} 별도 λΆ€μ°©
πŸ”΄ μœ„ν—˜onclick= 속성L19387
πŸ™ 사과 쀑심
el.onclick = function(){} 별도 λΆ€μ°©
πŸ”΄ μœ„ν—˜onclick= 속성L19393el.onclick = function(){} 별도 λΆ€μ°©
πŸ”΄ μœ„ν—˜onclick= 속성L19402el.onclick = function(){} 별도 λΆ€μ°©
πŸ”΄ μœ„ν—˜onclick= 속성L19416el.onclick = function(){} 별도 λΆ€μ°©
πŸ”΄ μœ„ν—˜onclick= 속성L19434
el.onclick = function(){} 별도 λΆ€μ°©
πŸ”΄ μœ„ν—˜onclick= 속성L19439
el.onclick = function(){} 별도 λΆ€μ°©
πŸ”΄ μœ„ν—˜onclick= 속성L19444
el.onclick = function(){} 별도 λΆ€μ°©
πŸ”΄ μœ„ν—˜onclick= 속성L19449
el.onclick = function(){} 별도 λΆ€μ°©
πŸ”΄ μœ„ν—˜onclick= 속성L19454
el.onclick = function(){} 별도 λΆ€μ°©
πŸ”΄ μœ„ν—˜onclick= 속성L25678el.onclick = function(){} 별도 λΆ€μ°©
πŸ”΄ μœ„ν—˜onclick= 속성L25684el.onclick = function(){} 별도 λΆ€μ°©
πŸ”΄ μœ„ν—˜onclick= 속성L25685el.onclick = function(){} 별도 λΆ€μ°©
πŸ”΄ μœ„ν—˜onclick= 속성L25686el.onclick = function(){} 별도 λΆ€μ°©
πŸ”΄ μœ„ν—˜onclick= 속성L25687el.onclick = function(){} 별도 λΆ€μ°©
πŸ”΄ μœ„ν—˜\n μ‹€μ œ κ°œν–‰ λ Œλ”L3380end = src.find('"""\n', m.end())bytes 5c6e β†’ 5c5c6e μˆ˜μ • ν•„μš”
πŸ”΄ μœ„ν—˜\n μ‹€μ œ κ°œν–‰ λ Œλ”L3393p = data.find(b"\x5c\x6e", idx) # \n λ°”μ΄νŠΈ μ‹œν€€μŠ€bytes 5c6e β†’ 5c5c6e μˆ˜μ • ν•„μš”
πŸ”΄ μœ„ν—˜\n μ‹€μ œ κ°œν–‰ λ Œλ”L3403lineno = data[:p].count(b"\n") + 1bytes 5c6e β†’ 5c5c6e μˆ˜μ • ν•„μš”
πŸ”΄ μœ„ν—˜\n μ‹€μ œ κ°œν–‰ λ Œλ”L3425# Python의 html="""...""" μ•ˆμ—μ„œ \n을 직접 μ“°λ©΄ Python이 μ‹€μ œ κ°œν–‰μœΌλ‘œ λ³€ν™˜ν•΄bytes 5c6e β†’ 5c5c6e μˆ˜μ • ν•„μš”
πŸ”΄ μœ„ν—˜\n μ‹€μ œ κ°œν–‰ λ Œλ”L3426# JS SyntaxErrorκ°€ λ°œμƒν•©λ‹ˆλ‹€. json.dumps()λ₯Ό μ“°λ©΄ \n, ", \ 등을bytes 5c6e β†’ 5c5c6e μˆ˜μ • ν•„μš”
πŸ”΄ μœ„ν—˜\n μ‹€μ œ κ°œν–‰ λ Œλ”L3430# _admin_msgs = {"foo": "쀄1\n쀄2"} # Pythonμ—μ„œ μžμ—°μŠ€λŸ½κ²Œ μž‘μ„±bytes 5c6e β†’ 5c5c6e μˆ˜μ • ν•„μš”
πŸ”΄ μœ„ν—˜\n μ‹€μ œ κ°œν–‰ λ Œλ”L3433# # JS: var _M = __ADMIN_MSGS__; β†’ var _M = {"foo":"쀄1\n쀄2"};bytes 5c6e β†’ 5c5c6e μˆ˜μ • ν•„μš”
πŸ”΄ μœ„ν—˜\n μ‹€μ œ κ°œν–‰ λ Œλ”L3532ex_fn = src.find("\ndef expenses_page():", ex_route)bytes 5c6e β†’ 5c5c6e μˆ˜μ • ν•„μš”
πŸ”΄ μœ„ν—˜\n μ‹€μ œ κ°œν–‰ λ Œλ”L3551js_code = "\n".join(scripts)bytes 5c6e β†’ 5c5c6e μˆ˜μ • ν•„μš”
πŸ”΄ μœ„ν—˜\n μ‹€μ œ κ°œν–‰ λ Œλ”L3560if c == "\n": in_lc = Falsebytes 5c6e β†’ 5c5c6e μˆ˜μ • ν•„μš”
πŸ”΄ μœ„ν—˜\n μ‹€μ œ κ°œν–‰ λ Œλ”L25863svgStr += ' → " 둜 λ Œλ” → innerHTML JS λŠκΉ€