๐ŸŒ Backend

๋‹จ๊ณ„๋ณ„๋กœ ์„ฑ์žฅํ•˜์ž!
ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ Local ํ™˜๊ฒฝ์ด ์•„๋‹Œ ๋‹ค๋ฅธ ํ™˜๊ฒฝ์—์„œ๋Š” JNDI๋ฅผ ์ด์šฉํ•˜์—ฌ Datasource๋ฅผ ์ ์šฉํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. WAS์— DB Resource๊ฐ€ ๋“ฑ๋ก๋˜์–ด ์žˆ๋Š” ์ด์œ  ์ƒํ™ฉ) ์šฐ์„  ์—ฌ๋Ÿฌ๊ฐœ์˜ Datasource์— ์—ฐ๊ฒฐํ•ด์•ผ ํ–ˆ๊ณ , Jeus๋ผ๋Š” WAS์— DB Resource ์ •๋ณด๋ฅผ ๋ชจ๋‘ ์ €์žฅํ•ด ๋†“์€ ์ƒํƒœ์˜€๋‹ค. ์—ฌ๊ธฐ์„œ ์™œ WAS์— Data Resource๋ฅผ ์„ค์ •ํ•ด ๋†“์•˜๋Š”์ง€ ์˜๋ฌธ์ด ๋“ค ์ˆ˜ ์žˆ๋‹ค. (๋‚˜๋„ ๊ทธ๋žฌ๋‹ค..) ๋ณดํ†ต ์ง€๊ธˆ๊นŒ์ง€ ๊ฐœ๋ฐœํ•  ๋•Œ๋Š” ์ˆœ์ˆ˜ JDBC๋‚˜ Spring์—์„œ ์ œ๊ณตํ•ด์ฃผ๋Š” ๊ธฐ๋ณธ์ ์ธ DBCP๋ฅผ ์‚ฌ์šฉํ•ด์™”๋‹ค. ํ•˜์ง€๋งŒ, ์‹ค์ œ ์šด์˜ํ•  ๋•Œ๋Š” JDBC ์„ค์ •์„ WAS์—์„œ ํ•˜๋Š”๊ฒŒ ์œ ๋ฆฌํ•œ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ๊ทธ ์ด์œ ๋Š” ๋ฏธ๋“ค์›จ์–ด๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์ธ๋ ฅ์€ ๋”ฐ๋กœ ์žˆ๋‹ค. ํ•˜๋‚˜์˜ WAS์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ๋™ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๊ณ ,..
์ตœ๊ทผ ํ”„๋กœ์ ํŠธ์—์„œ SessionFilter๋ฅผ GenericFilterBean๋‚˜ Filter๊ฐ€ ์•„๋‹Œ OncePerRequestFilter๋ฅผ extendsํ•˜์—ฌ ๊ตฌํ˜„ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ์™œ OncePerRequestFilter๋ฅผ ์‚ฌ์šฉํ–ˆ๋Š”์ง€ ์ด ๊ธ€์—์„œ ๋‹ค๋ค„๋ณด๊ณ ์ž ํ•œ๋‹ค. ์šฐ์„  ์œ„ ๊ทธ๋ฆผ์„ ํ†ตํ•ด Filter์˜ ๋™์ž‘ ์ˆœ์„œ์— ๋Œ€ํ•ด ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ๋‹ค. Filter๋Š” DispatcherServlet ์‹คํ–‰ ์ „ ํ›„์— ํ˜ธ์ถœ๋˜๋Š”๋ฐ, Filter๋ฅผ ์‚ฌ์šฉํ•˜๋‹ค๋ณด๋ฉด Filter๊ฐ€ ์ค‘๋ณต์œผ๋กœ ํ˜ธ์ถœ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. Filter๊ฐ€ ์ค‘๋ณต ํ˜ธ์ถœ๋˜๋Š” Case Filter๋Š” Servlet๋งˆ๋‹ค ํ˜ธ์ถœ๋˜๋ฉฐ, Servlet์€ ์š”์ฒญ๋งˆ๋‹ค Servlet์„ ์ƒ์„ฑํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•œ ๋’ค ๊ฐ™์€ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด ์ƒ์„ฑํ•ด ๋‘” ์„œ๋ธ”๋ฆฟ ๊ฐ์ฒด๋ฅผ ์žฌํ™œ์šฉํ•œ๋‹ค. ํ•˜์ง€๋งŒ, ์œ„ ..
๋ฒ„์ „ ์—…๊ทธ๋ ˆ์ด๋“œ ๋ฐฐ๊ฒฝ ํ”„๋กœ์ ํŠธ์—์„œ U2L(Unix To Linux) ์ž‘์—…์„ ์ง„ํ–‰ํ•˜๋ฉฐ ์ตœ์‹  Linux์—์„œ ๊ถŒ์žฅํ•˜๊ณ  ๋˜ํ•œ ๋ณด์•ˆ ์ทจ์•ฝ์  ๊ฒ€์‚ฌ ํ†ต๊ณผ๋ฅผ ์œ„ํ•ด JDK ๋ฒ„์ „์œผ๋กœ ์˜ฌ๋ ค์•ผ ํ•˜๋Š” ์ผ์ด ๋ฐœ์ƒํ–ˆ๋‹ค. ํ•ด๋‹น ๊ณผ์ •์—์„œ, ํ•˜๋Š”๊น€์— ๊ด€๋ จ๋œ ์„œ๋ธŒ ์‹œ์Šคํ…œ์˜ Spring Boot ๋ฒ„์ „๋„ ๊ฐ™์ด ์˜ฌ๋ฆฌ๊ฒŒ ๋˜์—ˆ๊ณ , Migration ๊ณ„ํš์„ ์„ธ์šฐ๋ฉด์„œ ๊ณต๋ถ€ํ–ˆ๋˜ ๊ฒƒ๋“ค์„ ๊ณต์œ ํ•˜๊ณ ์ž ํ•œ๋‹ค. ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๋ฒ„์ „์€ 2.7.18๋ฒ„์ „์ด์—ˆ๊ณ , ๋‹จ๊ณ„๋ณ„๋กœ ๋ฒ„์ „์„ ์—…๊ทธ๋ ˆ์ด๋“œ ํ•˜๋ฉด์„œ ์ง„ํ–‰ํ•˜๋ ค๊ณ  ํ–ˆ์œผ๋‚˜ ์„œ๋ธŒ ์‹œ์Šคํ…œ์ด๊ธฐ์— ์ฝ”๋“œ์–‘๋„ ๋งŽ์ง€ ์•Š๊ณ  ์ˆ˜์ •ํ•  ๋ถ€๋ถ„์ด ๋งŽ์ง€ ์•Š์„ ๊ฒƒ์œผ๋กœ ํŒ๋‹จํ•˜์—ฌ ํ•œ ๋ฒˆ์— ์˜ฌ๋ฆฌ๊ฒŒ ๋˜์—ˆ๋‹ค. (์ด๋ ‡๊ฒŒ ํ•ด์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€๋Š” ์•Š์•˜์ง€๋งŒ, ์—ฌ๋Ÿฌ๋ถ„๋“ค์€ ํฐ ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์—ˆ๋˜ ๋ฒ„์ „๋“ค์„ ์ฐจ๋ก€๋Œ€๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ ํ•˜๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•œ๋‹ค.) ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ˆœ์„œ 1. ๋งˆ์ด๊ทธ..
Thread Process์˜ ์ž‘์—…์€ Thread ๋‹จ์œ„๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  CPU Core๊ฐ€ Thread ๋‹จ์œ„๋กœ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๊ฒŒ ๋œ๋‹ค. ๊ฒฐ๋ก ์ ์œผ๋กœ Thread๋Š” CPU Core์˜ ์‹คํ–‰ ๋‹จ์œ„์ด๋‹ค. Thread๋ฅผ ์‚ฌ์šฉํ•จ์œผ๋กœ์„œ ํ•˜๋‚˜์˜ Process์—์„œ ๋‘ ๊ฐ€์ง€ ์ด์ƒ์˜ ์ž‘์—…์„ ๋™์‹œ์— ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋œ๋‹ค. Thread๋ฅผ ๋‹จ์ˆœํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ๋•Œ ๋ฌธ์ œ์  ์ƒˆ๋กœ์šด ์š”์ฒญ์ด ๋“ค์–ด์˜ฌ ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กœ์šด Thread๋ฅผ ์ƒ์„ฑํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ณ  ๋ฌธ์ œ์ ์„ ์ƒ๊ฐํ•ด๋ณด์ž. ์ƒ์„ฑ ๋น„์šฉ์ด ํฐ Thread Thread๋Š” ์ƒ์„ฑ ๋น„์šฉ์ด ํฌ๋‹ค. ๋”ฐ๋ผ์„œ ํ•ด๋‹น ๋ฐฉ์‹์œผ๋กœ๋Š” ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต์‹œ๊ฐ„์ด ๋Š˜์–ด๋‚  ์ˆ˜ ๋ฐ–์— ์—†๋‹ค. ์•„๋ž˜ ๊ทธ๋ฆผ์„ ๋ณด๋ฉด์„œ ๋” ์ž์„ธํ•˜๊ฒŒ ์•Œ์•„๋ณด์ž. Java๋Š” One-to-One Threading-Model๋กœ Thread๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. User Thre..
XSS(Cross-Site Scripting) ๊ณต๊ฒฉ์ž๊ฐ€ ์›น ์ƒ์—์„œ SQL Injection๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ณต๊ฒฉํ•˜๋ ค๋Š” ์‚ฌ์ดํŠธ์— ์•…์˜์ ์ธ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ฃผ์ž…ํ•˜๋Š” ๊ณต๊ฒฉ์ด๋‹ค. ์ฃผ๋กœ, ๋‹ค๋ฅธ ์›น ์‚ฌ์ดํŠธ์™€ ์ •๋ณด๋ฅผ ๊ตํ™˜ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— Cross Site Scripting์ด๋ผ๊ณ  ๋ช…์นญํ•œ๋‹ค. ํ•ด๋‹น ์ทจ์•ฝ์ ์€ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ๊ฐ’์„ ์ œ๋Œ€๋กœ ๊ฒ€์‚ฌํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ๋‚˜ํƒ€๋‚  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ณต๊ฒฉ์— ์„ฑ๊ณตํ•˜๋ฉด ์‚ฌ์ดํŠธ์— ์ ‘์†ํ•œ ์‚ฌ์šฉ์ž๋Š” ์‚ฝ์ž…๋œ ์ฝ”๋“œ๋ฅผ ๊ฐ•์ œ๋กœ ์‹คํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์ฟ ํ‚ค, ์„ธ์…˜, ํ† ํฐ์„ ํƒˆ์ทจํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ๋ฏผ๊ฐํ•œ ์ •๋ณด๋ฅผ ํƒˆ์ทจํ•˜๊ฑฐ๋‚˜ ํด๋ผ์ด์–ธํŠธ ์ฝ”๋“œ๋ฅผ ์žฌ์ž‘์„ฑํ•˜์—ฌ ํ•ดํ‚นํ•˜๊ธฐ๋„ ํ•œ๋‹ค. ์•…์˜์ ์ธ ์ปจํ…์ธ ๋กœ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ณต๊ฒฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. 1) ์ฟ ํ‚ค๋‚˜ ์„ธ์…˜ ์ •๋ณด ํƒˆ์ทจ 2) ์ ‘์†์ž๋ฅผ ์ž์‹ ์ด ์˜๋„ํ•œ ..
์ธ์ฆ์˜ ํ•„์š”์„ฑ HTTP ํ†ต์‹ ์€ ์š”์ฒญ๊ณผ ์‘๋‹ต์ด ์ข…๋ฃŒ๋˜๋ฉด ์—ฐ๊ฒฐ์„ ๋Š๋Š” Connectionless ํŠน์„ฑ๊ณผ ์—ฐ๊ฒฐ์ด ๋Š์–ด์ง€๋ฉด ์–ด๋– ํ•œ ์ƒํƒœ๋„ ์œ ์ง€ํ•˜์ง€ ์•Š๋Š” Statelessํ•œ ์ฒ˜๋ฆฌ ๋ฐฉ์‹์ด๋‹ค. ๋”ฐ๋ผ์„œ, ๋กœ๊ทธ์ธ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ฟ ํ‚ค, ์„ธ์…˜, ํ† ํฐ์„ ์‚ฌ์šฉํ•œ๋‹ค. Connectionless ํ”„๋กœํ† ์ฝœ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ์š”์ฒญํ•˜๊ณ  ์‘๋‹ต์„ ๋ฐ›์œผ๋ฉด ์—ฐ๊ฒฐ์„ ๋Š๋Š” ์ฒ˜๋ฆฌ ๋ฐฉ์‹ Stateless ํ”„๋กœํ† ์ฝœ ํด๋ผ์ด์–ธํŠธ์˜ ์ƒํƒœ ์ •๋ณด๋ฅผ ๊ฐ€์ง€์ง€ ์•Š๋Š” ์„œ๋ฒ„ ์ฒ˜๋ฆฌ ๋ฐฉ์‹์ด๋‹ค. 1. ์ฟ ํ‚ค ๐Ÿช ์ฟ ํ‚ค๋Š” Key-Value ํ˜•์‹์˜ ๋ฌธ์ž์—ด๋กœ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋งก๊ฒจ๋„ ๋˜๋Š” ๊ณต๊ฐœ ๊ฐ€๋Šฅํ•œ ์ •๋ณด๋ฅผ ์‚ฌ์šฉ์ž ๋ธŒ๋ผ์šฐ์ €์— ์ €์žฅ์‹œํ‚จ๋‹ค. ์ฟ ํ‚ค ๋™์ž‘ ๋ฐฉ์‹ ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ๋กœ๊ทธ์ธ ์š”์ฒญ์— ๋Œ€ํ•ด ์‘๋‹ตํ•  ๋•Œ, ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‹๋ณ„ํ•˜๋Š” ์ž‘์€ ์ •๋ณด๋ฅผ Response Header์˜ set-cooki..
DevPoong
'๐ŸŒ Backend' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก