ํ’€์ด ๋‚ ์งœ: 2026-09-16 (์‚ฌ์šฉ์ž ํ™•์ •). ์ต์Šคํ”Œ๋กœ์ž‡ ์„ฑ๊ณต์€ 2026-09-16 ์‚ฌ์šฉ์ž ํ™•์ธ์— ๋”ฐ๋ฅธ๋‹ค. ์•„๋ž˜ ์‹คํ–‰ ๊ฒฐ๊ณผ๋Š” ๋ณด์กด๋œ ์›๋ณธ ๊ธฐ๋ก์ด๋ฉฐ ์ด๋ฒˆ ๊ฐ์‚ฌ์—์„œ ์ƒˆ๋กœ ์‹คํ–‰ํ•œ ๊ฒฐ๊ณผ๊ฐ€ ์•„๋‹ˆ๋‹ค.

๋กœ์ปฌ ์ถœ๋ฐœ์ง€์™€ ๋ธŒ๋ผ์šฐ์ € origin์˜ ๋‹ค๋ฅธ ์˜๋ฏธ

์ œ๋ชฉ์€ ๐ŸŒโ†”๏ธ๐Ÿ  2์ด๋ฉฐ home2๋Š” source ๋ณ„์นญ์ด๋‹ค. ์ด ์„œ๋น„์Šค๋Š” ๊ณ„์ • ๋กœ๊ทธ์ธ๊ณผ URL ์‹ ๊ณ ยทChrome ๋ด‡์„ ์ œ๊ณตํ•œ๋‹ค. ๋กœ๊ทธ์ธ ์‹œ ๊ด€๋ฆฌ์ž ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ์‹ค์ œ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

req.session.username = username;
req.session.isAdmin = isLocalhost(req.ip);

๊ด€๋ฆฌ์ž ์†์„ฑ์ด ๊ณ„์ • ๋ ˆ์ฝ”๋“œ ์ž์ฒด๊ฐ€ ์•„๋‹ˆ๋ผ ๋กœ๊ทธ์ธ ์š”์ฒญ์˜ ์ถœ๋ฐœ์ง€ ํŒ์ •์œผ๋กœ ์„ธ์…˜์— ์ €์žฅ๋œ๋‹ค. ๋กœ๊ทธ์ธ ์ดํ›„ ๋‹ค๋ฅธ ์š”์ฒญ์—์„œ ๋‹ค์‹œ ๊ฒ€์‚ฌํ•˜๋Š” ์ถœ๋ฐœ์ง€์™€๋„ ๋ณ„๊ฐœ์˜ ๊ฐ’์ด๋‹ค.

๊ฒ€์ฆ ํ•ญ๋ชฉ์„ ์š”์ฒญ ๋‹จ๊ณ„๋ณ„๋กœ ๋ถ„๋ฆฌ

์œ„์น˜ ํ™•์ธํ•˜๋Š” ๊ฐ’ ๋ถ„์„์ƒ ์˜๋ฏธ
๋กœ๊ทธ์ธ ๊ณ„์ •ยทCSRF ๋ฐ ์š”์ฒญ IP ์‚ฌ์šฉ์ž ์ธ์ฆ๊ณผ ๋กœ์ปฌ ๊ถŒํ•œ ๋ถ€์—ฌ๊ฐ€ ๊ฒฐํ•ฉ
๊ฐ€์ž… ํผ ์š”์ฒญ ๋กœ์ปฌ IP์™€ Fetch Metadata ์š”์ฒญ ์ข…๋ฅ˜์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์ œ์•ฝ
๋ฏผ๊ฐ ์‘๋‹ต ์„ธ์…˜ ๊ด€๋ฆฌ์ž ๊ฐ’, ํ˜„์žฌ IP, mode/destination ์ €์žฅ ์ƒํƒœ์™€ ํ˜„์žฌ ์š”์ฒญ์„ ํ•จ๊ป˜ ํ•ด์„
์‹ ๊ณ  ๋ด‡ URLยท๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ ์›น ๊ธฐ๋Šฅ๊ณผ ๋„คํŠธ์›Œํฌ ์ ‘๊ทผ์„ฑ์ด ๊ด€์—ฌ

๋ธŒ๋ผ์šฐ์ € origin์€ schemeยทhostยทport์˜ ์กฐํ•ฉ์ด๊ณ  ์„œ๋ฒ„๊ฐ€ ๋ณด๋Š” ์‹ค์ œ ์ ‘์† ์ฃผ์†Œ๋Š” ๋‹ค๋ฅธ ๊ฐ’์ด๋‹ค. DNS ๋ชฉ์ ์ง€๊ฐ€ ๋ฐ”๋€Œ๋Š” ํ˜„์ƒ๊ณผ origin์˜ ๋ฌธ์ž์—ด ๋น„๊ต๋Š” ๊ฐ™์€ ๊ฒ€์‚ฌ๊ฐ€ ์•„๋‹ˆ๋‹ค. ๊ธฐ์กด ANALYSIS๋Š” ์ด ์ฐจ์ด์™€ ๋ธŒ๋ผ์šฐ์ € ๊ธฐ๋Šฅ์˜ ์ƒํ˜ธ์ž‘์šฉ์„ root cause๋กœ ๋ถ„๋ฅ˜ํ•œ๋‹ค.

์ •์  ์ฝ”๋“œ๋งŒ์œผ๋กœ ๋‹จ์ •ํ•˜์ง€ ์•Š์€ ๋ถ€๋ถ„

ANALYSIS๋Š” navigator์˜ own property๋ฅผ ๊ฐ€๋ฆฐ ์‚ฌ์‹ค๊ณผ ํ•ด๋‹น ๊ธฐ๋Šฅ์ด prototype๊นŒ์ง€ ์‚ฌ๋ผ์กŒ๋‹ค๋Š” ์ฃผ์žฅ์„ ๊ตฌ๋ถ„ํ•œ๋‹ค. JavaScript ๊ฐ์ฒด์˜ ํ•œ ์œ„์น˜๋ฅผ ๋ฐ”๊ฟจ๋‹ค๊ณ  ๊ธฐ๋Šฅ ์ž์ฒด๊ฐ€ ์™„์ „ํžˆ ์ œ๊ฑฐ๋˜์—ˆ๋‹ค๊ณ  ์ถ”๋ก ํ•˜๋ฉด ์•ˆ ๋œ๋‹ค.

๋˜ํ•œ ์ผ๋ฐ˜ fetch์™€ navigation ๊ณ„์—ด ์š”์ฒญ์ด ๊ฐ–๋Š” Fetch Metadata๋Š” ๋™์ผํ•˜์ง€ ์•Š๋‹ค. ํ›„์† ๊ธฐ๋ก์€ Navigation Preload๋ฅผ ํฌํ•จํ•œ ๋ธŒ๋ผ์šฐ์ € ๋™์ž‘์„ ๊ด€์ฐฐํ•ด ์ •์  ๊ฐ€์ •์„ ์ˆ˜์ •ํ–ˆ๋‹ค. ์„œ๋ฒ„์— ๋™์ผํ•œ ๋ฌธ์ž์—ด ํ—ค๋”๋ฅผ ์†์œผ๋กœ ๋ถ™์ผ ์ˆ˜ ์žˆ๋Š”์ง€์™€ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์‹ค์ œ ์ƒ์„ฑํ•˜๋Š” ์š”์ฒญ์˜ ์˜๋ฏธ๋„ ํ˜ผ๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ด ๊ธ€์€ ๋ธŒ๋ผ์šฐ์ € ๊ธฐ๋Šฅยท๊ถŒํ•œ ๊ฒ€์‚ฌ์˜ ์˜๋ฏธ๋ฅผ ๋Œ€์กฐํ•˜๋ฉฐ, ์š”์ฒญ ์กฐํ•ฉ์ด๋‚˜ ๋„คํŠธ์›Œํฌ ์„ค์ •์„ ํ†ตํ•œ ์šฐํšŒ ์ ˆ์ฐจ๋Š” ์žฌ๊ตฌ์„ฑํ•˜์ง€ ์•Š๋Š”๋‹ค.

์ตœ์ข… ๊ทผ๊ฑฐ์™€ ํ™˜๊ฒฝ

GATES๋Š” ๊ฐ ๋ธŒ๋ผ์šฐ์ €ยท์„œ๋ฒ„ ์ƒํƒœ ํ™•์ธ๊ณผ ์ตœ์ข… ๊ฒฐ๊ณผ๋ฅผ ๋‚˜๋ˆ„๊ณ  ๋กœ์ปฌ clean restart ์„ธ ๋ฒˆ์˜ ์„ฑ๊ณต์„ ๊ธฐ๋กํ•œ๋‹ค. ์‚ฌ์šฉ์ž์˜ ์ต์Šคํ”Œ๋กœ์ž‡ ์„ฑ๊ณต ํ™•์ธ๊ณผ ์ผ์น˜ํ•˜์ง€๋งŒ ๊ณต์‹ ์›๊ฒฉ ๊ฒ€์ฆ ๊ทผ๊ฑฐ๋Š” ์•„๋‹ˆ๋‹ค. ์›๋ณธ ๋ฐฐํฌ๋ฌผ์˜ placeholder๋ฅผ ์‹ค์ œ flag๋กœ ํ‘œ์‹œํ•˜์ง€ ์•Š๋Š”๋‹ค.

๋ธŒ๋ผ์šฐ์ € ๋ฒ„์ „, ์ด๋ฆ„ ํ•ด์„, ๋„คํŠธ์›Œํฌ ์ ‘๊ทผ์„ฑ ๋ฐ origin ๊ตฌ์„ฑ์€ ๋‹น์‹œ ๊ฒฐ๊ณผ์˜ ์ „์ œ๋‹ค. ์ด ํ™˜๊ฒฝ ์˜์กด์„ฑ์„ ์ œ๊ฑฐํ•œ ๋ฒ”์šฉ ๊ฒฐ๊ณผ์ฒ˜๋Ÿผ ์“ฐ์ง€ ์•Š๋Š”๋‹ค. ์ด๋ฒˆ ๊ฐ์‚ฌ๋Š” ์›๋ณธ app.js์™€ ๊ธฐ์กด ๋ถ„์„ยท๊ฒ€์ฆ ์ž๋ฃŒ๋ฅผ ์ฝ์€ ๊ฒƒ์ด๋ฉฐ ๋ธŒ๋ผ์šฐ์ €๋‚˜ ๋„คํŠธ์›Œํฌ ์žฌํ˜„์„ ์‹คํ–‰ํ•˜์ง€ ์•Š์•˜๋‹ค.

๊ทผ๊ฑฐ ์ž๋ฃŒ

  • sources/home2/local/original/deploy/app.js
  • sources/home2/ANALYSIS.md
  • sources/home2/GATES.md
  • sources/home2/VM_GATES.md

์›๋ณธ ๋ฌธ์„œยทsolverยท๊ฒ€์ฆ ๋กœ๊ทธ๋Š” ์ „๋‹ฌ staging์— ๋ณด์กด๋˜์–ด ์žˆ๋‹ค. ์ด ๊ฒฝ๋กœ๋“ค์€ provenance์ด๋ฉฐ CMS์˜ ๋‹ค์šด๋กœ๋“œ ์ฒจ๋ถ€ ๋งํฌ๊ฐ€ ์•„๋‹ˆ๋‹ค.