์‚ฌ์šฉ์ž ์ธ์ฆ์˜ ๋งฅ๋ฝ์—์„œ ์„ธ์…˜ ์ฟ ํ‚ค๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋™์•ˆ ์‚ฌ์šฉ์ž ์„ธ์…˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ž„์‹œ๋กœ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋„๋ก ์„ค๊ณ„๋œ ํŠน์ • ์œ ํ˜•์˜ HTTP ์ฟ ํ‚ค๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด ์ž„์‹œ ์ €์žฅ์†Œ๋Š” ์—ฌ๋Ÿฌ ํŽ˜์ด์ง€ ์š”์ฒญ์— ๊ฑธ์ณ ์‚ฌ์šฉ์ž์˜ ์ƒํƒœ์™€ ๊ธฐ๋ณธ ์„ค์ •์„ ์œ ์ง€ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋ฉฐ ์›น ํƒ์ƒ‰ ์ค‘์— ์›ํ™œํ•˜๊ณ  ์ผ๊ด€๋œ ๊ฒฝํ—˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์„ธ์…˜ ์ฟ ํ‚ค๋Š” ์›น ๋ฐ ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ „๋ฐ˜์ ์ธ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜๊ณผ ๋ณด์•ˆ์— ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋‹จ์ผ ์‚ฌ์šฉ์ž ์„ธ์…˜ ๋™์•ˆ์—๋งŒ ํ™œ์„ฑํ™”๋˜๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์•„์›ƒํ•˜๊ฑฐ๋‚˜ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋‹ซ๋Š” ๋“ฑ ์„ธ์…˜์ด ์ข…๋ฃŒ๋œ ํ›„ ์ฆ‰์‹œ ์‚ญ์ œ๋œ๋‹ค๋Š” ์ ์—์„œ ์˜๊ตฌ ์ฟ ํ‚ค์™€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์— ์˜๊ตฌ ์ฟ ํ‚ค๋Š” ์„ธ์…˜์ด ์ข…๋ฃŒ๋œ ํ›„์—๋„ ์‚ฌ์šฉ์ž์˜ ์žฅ์น˜์— ๊ณ„์† ์ €์žฅ๋˜์–ด ์›น์‚ฌ์ดํŠธ๊ฐ€ ์—ฌ๋Ÿฌ ๋ฒˆ์˜ ๋ฐฉ๋ฌธ์— ๊ฑธ์ณ ์‚ฌ์šฉ์ž ๊ธฐ๋ณธ ์„ค์ •๊ณผ ์„ค์ •์„ "๊ธฐ์–ต"ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์ผ์‹œ์ ์ธ ํŠน์„ฑ์œผ๋กœ ์ธํ•ด ์„ธ์…˜ ์ฟ ํ‚ค๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์˜๊ตฌ ์ฟ ํ‚ค๋ณด๋‹ค ๋” ์•ˆ์ „ํ•œ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค.

AppMasterno-code ํ”Œ๋žซํผ์„ ํ™œ์šฉํ•˜์—ฌ ๋ฐฑ์—”๋“œ, ์›น ๋ฐ ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ๋•Œ ์„ธ์…˜ ์ฟ ํ‚ค๋Š” ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ํ–ฅ์ƒ์‹œ์ผœ ์›ํ™œํ•˜๊ณ  ์•ˆ์ „ํ•œ ์‚ฌ์šฉ์ž ์ธ์ฆ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ธ์…˜ ์ฟ ํ‚ค๋Š” ์ธ์ฆ ์„ฑ๊ณต ์‹œ ๊ฐ ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ณ ์œ ํ•œ ์„ธ์…˜ ID๋ฅผ ํ• ๋‹นํ•˜์—ฌ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ด ID๋Š” ์‚ฌ์šฉ์ž ์žฅ์น˜์˜ ์„ธ์…˜ ์ฟ ํ‚ค ๋‚ด์— ์ €์žฅ๋˜๋ฉฐ ์„ธ์…˜ ์ค‘์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ์˜ ํ›„์† ์ƒํ˜ธ ์ž‘์šฉ์„ ์œ„ํ•ด ์‚ฌ์šฉ์ž๋ฅผ ์‹๋ณ„ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์„ธ์…˜ ์ฟ ํ‚ค๋Š” ์‹ค์ œ ์‚ฌ์šฉ์ž์˜ ์‹ ์›์ด๋‚˜ ๋ฏผ๊ฐํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์•„๋‹Œ ์„ธ์…˜ ID๋งŒ ์ €์žฅํ•˜๋ฏ€๋กœ ์ธ์ฆ ํ”„๋กœ์„ธ์Šค์— ์ถ”๊ฐ€ ๋ณด์•ˆ ๊ณ„์ธต์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ณต๊ฒฉ์ž๊ฐ€ ์‚ฌ์šฉ์ž์˜ ์„ธ์…˜ ์ฟ ํ‚ค๋ฅผ ๊ฐ€๋กœ์ฑ„๊ฑฐ๋‚˜ ๋ณต์ œํ•˜๋”๋ผ๋„ ์‹ค์ œ ์‚ฌ์šฉ์ž ์ž๊ฒฉ ์ฆ๋ช…์ด๋‚˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์•„๋‹Œ ์„ธ์…˜ ID์—๋งŒ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ Go ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ์ƒ์„ฑ๋œ AppMaster ์˜ ๋ฐฑ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์„ธ์…˜ ์ฟ ํ‚ค ๊ตฌํ˜„์˜ ๋ณด์•ˆ๊ณผ ํ™•์žฅ์„ฑ์„ ๋”์šฑ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ์„ธ์…˜ ์ฟ ํ‚ค๋Š” SSO(Single Sign-On) ์‹œ์Šคํ…œ ๊ตฌํ˜„์„ ์šฉ์ดํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. SSO ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๋ฉด ์‚ฌ์šฉ์ž๋Š” ๋‹จ์ผ ์ž๊ฒฉ ์ฆ๋ช… ์„ธํŠธ๋กœ ์ธ์ฆํ•˜๊ณ  ์—ฌ๋Ÿฌ ๊ด€๋ จ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ธ์…˜ ์ฟ ํ‚ค๋Š” ๋ชจ๋“  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‚ฌ์šฉ์ž์˜ ์ธ์ฆ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜์—ฌ ์ „์ฒด ์ธ์ฆ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‹จ์ˆœํ™”ํ•˜๊ณ  ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค. ๋กœ๋“œ๊ฐ€ ๋†’์€ ์‚ฌ์šฉ ์‚ฌ๋ก€์—์„œ AppMaster ์˜ ํ”Œ๋žซํผ์€ ์ƒํƒœ ๋น„์ €์žฅ ๋ฐฑ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ Postgresql ํ˜ธํ™˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํšจ์œจ์ ์ด๊ณ  ์‘๋‹ต์„ฑ์ด ๋›ฐ์–ด๋‚œ ์„ธ์…˜ ์ฒ˜๋ฆฌ๋ฅผ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ์ธ์ฆ ์ธก๋ฉด์—์„œ ์„ธ์…˜ ์ฟ ํ‚ค์˜ ์ค‘์š”ํ•œ ์ด์  ์ค‘ ํ•˜๋‚˜๋Š” CSRF(Cross-Site Request Forgery) ๊ณต๊ฒฉ์„ ๋ฐฉ์ง€ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์„ธ์…˜ ์ฟ ํ‚ค ๋‚ด์— CSRF ๋ฐฉ์ง€ ํ† ํฐ์„ ํ†ตํ•ฉํ•จ์œผ๋กœ์จ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์š”์ฒญ์ด ํ•ฉ๋ฒ•์ ์ธ ์†Œ์Šค์—์„œ๋งŒ ํ—ˆ์šฉ๋˜๋„๋ก ๋ณด์žฅํ•˜์—ฌ ์ธ์ฆ๋œ ์‚ฌ์šฉ์ž๋ฅผ ๋Œ€์‹ ํ•˜์—ฌ ๋ฌด๋‹จ ์ž‘์—…์ด ์ˆ˜ํ–‰๋˜๋Š” ์œ„ํ—˜์„ ์™„ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์„ธ์…˜ ์ฟ ํ‚ค๊ฐ€ ๋ณด์•ˆ ์œ„ํ—˜์œผ๋กœ๋ถ€ํ„ฐ ์™„์ „ํžˆ ๋ฉด์—ญ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ๋ชจ๋“  HTTP ์š”์ฒญ๊ณผ ํ•จ๊ป˜ ์ „์†ก๋˜๋ฏ€๋กœ ์‚ฌ์šฉ์ž์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ํ†ต์‹ ์ด ์•”ํ˜ธํ™”๋ฅผ ํ†ตํ•ด ๋ณดํ˜ธ๋˜์ง€ ์•Š์œผ๋ฉด ๊ฐ€๋กœ์ฑ„๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์œ„ํ—˜์„ ํšจ๊ณผ์ ์œผ๋กœ ์™„ํ™”ํ•˜๋ ค๋ฉด ๊ฐœ๋ฐœ์ž๋Š” HTTPS ์‚ฌ์šฉ์„ ๊ฐ•์ œํ•˜๊ณ  ์„ธ์…˜ ์ฟ ํ‚ค์— Secure ๋ฐ HttpOnly ํ”Œ๋ž˜๊ทธ๋ฅผ ๊ตฌํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Secure ํ”Œ๋ž˜๊ทธ๋Š” ์„ธ์…˜ ์ฟ ํ‚ค๊ฐ€ ์•ˆ์ „ํ•˜๊ณ  ์•”ํ˜ธํ™”๋œ ์—ฐ๊ฒฐ์„ ํ†ตํ•ด์„œ๋งŒ ์ „์†ก๋˜๋„๋ก ๋ณด์žฅํ•˜๋Š” ๋ฐ˜๋ฉด, HttpOnly ํ”Œ๋ž˜๊ทธ๋Š” JavaScript์™€ ๊ฐ™์€ ํด๋ผ์ด์–ธํŠธ ์ธก ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ฟ ํ‚ค์— ์•ก์„ธ์Šคํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜์—ฌ XSS(๊ต์ฐจ ์‚ฌ์ดํŠธ ์Šคํฌ๋ฆฝํŒ…) ๊ณต๊ฒฉ์˜ ์œ„ํ—˜์„ ์ค„์ž…๋‹ˆ๋‹ค. .

๊ฒฐ๋ก ์ ์œผ๋กœ, ์„ธ์…˜ ์ฟ ํ‚ค๋Š” ์›น ๋ฐ ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์‚ฌ์šฉ์ž ์ธ์ฆ ํ”„๋กœ์„ธ์Šค์—์„œ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•˜๋ฉฐ, ์„ธ์…˜ ์ „๋ฐ˜์— ๊ฑธ์ณ ์‚ฌ์šฉ์ž ์ƒํƒœ์™€ ์„ ํ˜ธ๋„๋ฅผ ์œ ์ง€ํ•˜๋Š” ์•ˆ์ „ํ•˜๊ณ  ํšจ์œจ์ ์ธ ์ˆ˜๋‹จ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. AppMaster ํ”Œ๋žซํผ ๋‚ด์— ์„ธ์…˜ ์ฟ ํ‚ค๋ฅผ ํ†ตํ•ฉํ•จ์œผ๋กœ์จ ๊ฐœ๋ฐœ์ž๋Š” ๋ฐฑ์—”๋“œ, ์›น ๋ฐ ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœ์ ํŠธ์— ๊ฐ•ํ™”๋˜๊ณ  ์•ˆ์ „ํ•œ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐฑ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ Go ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด, ํ™•์žฅ์„ฑ์„ ์œ„ํ•œ ๋ฌด์ƒํƒœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, Postgresql ํ˜ธํ™˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํฌํ•จํ•˜๋Š” AppMaster ์˜ ๊ฐ•๋ ฅํ•œ ์ธํ”„๋ผ๋Š” ์„ธ์…˜ ์ฟ ํ‚ค ๊ด€๋ฆฌ์˜ ์‹ ๋ขฐ์„ฑ๊ณผ ๋ณด์•ˆ์„ ๋ชจ๋‘ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.