[Spring] API ์š”์ฒญ๋ณ„ ์ฟผ๋ฆฌ ํšŸ์ˆ˜ / ์‹คํ–‰ ์‹œ๊ฐ„ ์ธก์ • ์นด์šดํ„ฐ ๊ตฌํ˜„
ยท
๐ŸŒฟSpring
๊ตฌํ˜„ ๊ณ„๊ธฐ์ด์ „์— ์ง„ํ–‰ํ•œ "๋ชจ๋‘์˜ ๋‰ด์Šค"๋ผ๋Š” ํ”„๋กœ์ ํŠธ์— ํŽ˜์ด์ง€๋„ค์ด์…˜ ๋“ฑ ์กฐํšŒ API ๊ตฌํ˜„์„ ๋‹ด๋‹นํ•œ ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.์ด‰๋ฐ•ํ•œ ์ผ์ • ํƒ“์— "์ผ๋‹จ ๋Œ์•„๊ฐ€๊ฒŒ ํ•˜์ž"๋ผ๋Š” ์ƒ๊ฐ์œผ๋กœ ํšจ์œจ์ ์ธ ์ฟผ๋ฆฌ ์„ค๊ณ„๋Š” ๊นŠ๊ฒŒ ๊ณ ๋ฏผํ•˜์ง€ ์•Š๊ณ  ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.๊ทธ ํ›„ ๋ฆฌํŒฉํ† ๋ง ์ž‘์—…์—์„œ ์ง€๋‚˜์น˜๊ฒŒ ๋ณต์žกํ•œ ์ฟผ๋ฆฌ๋ฅผ ๊ฐœ์„ ํ•˜๊ณ , N+1 ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์— ์ง‘์ค‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹œ ์ €๋Š” N+1 ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์—ฌ ํ˜ธ์ถœ๋˜๋Š” ์ฟผ๋ฆฌ ํšŸ์ˆ˜๋ฅผ ์ค„์ธ๋‹ค๋ฉด 'DB ๋ถ€ํ•˜๊ฐ€ ์ค„์–ด๋“œ๋‹ˆ ๋‹น์—ฐํžˆ ์„ฑ๋Šฅ ๊ฐœ์„ ์ด ๋˜๊ฒ ์ง€'๋ผ๊ณ  ๋ง‰์—ฐํžˆ ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.๋ฌผ๋ก  ํ‹€๋ฆฐ ๋ง์€ ์•„๋‹™๋‹ˆ๋‹ค๋งŒ, "๊ทธ๋ž˜์„œ ์‹ค์ œ๋กœ ์„ฑ๋Šฅ์ด ์–ผ๋งˆ๋‚˜ ๊ฐœ์„ ๋๋Š”๋ฐ?"๋ผ๋Š” ์งˆ๋ฌธ์ด ๋”ฐ๋ผ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์นจ ์ฝ”๋“œ ๋ฆฌ๋ทฐ ๊ณผ์ •์—์„œ ํŒ€์›๋ถ„์ด โ€œ์‹คํ–‰ ์‹œ๊ฐ„์„ ์ง์ ‘ ์ธก์ •ํ•ด๋ณด๋ฉด ๊ฐœ์„  ํšจ๊ณผ๋ฅผ ์ˆ˜์น˜๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹คโ€๋Š” ํ”ผ๋“œ๋ฐฑ์„ ์ฃผ์…จ์Šต๋‹ˆ๋‹ค. ๊ทธ๋•Œ๊นŒ์ง€ ์ €..
[Spring] AOP(Aspect Oriented Programming) ๊ฐœ๋… ์ดํ•ดํ•˜๊ธฐ
ยท
๐ŸŒฟSpring
๐Ÿ“Œ ํšก๋‹จ๊ด€์‹ฌ์‚ฌ์™€ AOPํšก๋‹จ ๊ด€์‹ฌ์‚ฌ๋Š” ์—ฌ๋Ÿฌ ๋ถ€๋ถ„์— ๊ณตํ†ต์ ์œผ๋กœ ๊ฑธ์ณ์ ธ ์žˆ๋Š” ๊ธฐ๋Šฅ๋“ค์„ ๋งํ•ฉ๋‹ˆ๋‹ค.์˜ˆ๋ฅผ ๋“ค์–ด ๋กœ๊น…, ํŠธ๋žœ์žญ์…˜, ์ธ์ฆ, ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๊ฐ€ ํ•ด๋‹น๋ฉ๋‹ˆ๋‹ค. AOP(Aspect Oriented Programming)๋Š” ๊ด€์  ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์œผ๋กœ,๋กœ์ง๋“ค์„ ํ•ต์‹ฌ์ ์ธ ๊ด€์ , ๋ถ€๊ฐ€์ ์ธ ๊ด€์ (ํšก๋‹จ ๊ด€์‹ฌ์‚ฌ)์œผ๋กœ ๋‚˜๋ˆ„์–ด ๊ด€์ ์„ ๊ธฐ์ค€์œผ๋กœ ๊ฐ๊ฐ ๋ชจ๋“ˆํ™”ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•ต์‹ฌ์ ์ธ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ ์—ฌ๋Ÿฌ ํด๋ž˜์Šค์— ๊ฑธ์ณ ์กด์žฌํ•  ์ˆ˜ ์žˆ๋Š” ๋กœ์ง์„ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.๊ณตํ†ต์ ์ธ ๊ด€์‹ฌ์‚ฌ๋ผ๋ฆฌ ๋ชจ๋“ˆํ™”ํ•˜์—ฌ์ฝ”๋“œ ์ค‘๋ณต์„ ์ค„์ด๊ณ ,๊ฐœ๋ฐœ์ž๋Š” ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์— ๋” ์ง‘์ค‘ํ•˜๊ณ ,์œ ์ง€ ๋ณด์ˆ˜์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.๐Ÿ“Œ AOP์˜ ์ฃผ์š” ์šฉ์–ดAspect: ๊ณตํ†ต ๊ธฐ๋Šฅ์„ ๋ชจ๋“ˆํ™”ํ•œ ๊ฒƒ์˜ˆ) ๋กœ๊น… ๊ธฐ๋Šฅ์„ Aspect๋กœ ์ •์˜Join Point: Aspect๊ฐ€ ์ ์šฉ๋  ์ˆ˜ ์žˆ๋Š” ์ง€์ ์˜ˆ)..
[Spring] ํ•„ํ„ฐ(Filter)์™€ ์ธํ„ฐ์…‰ํ„ฐ(Interceptor) ์ฐจ์ด
ยท
๐ŸŒฟSpring
Spring์€ ๊ณตํ†ต๋œ ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•˜์—ฌ ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ์ค‘๋ณต๋œ ์ฝ”๋“œ๋ฅผ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋„๋ก ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.์˜ค๋Š˜์€ ๊ทธ ์ค‘ ํ•„ํ„ฐ(Filter)์™€ ์ธํ„ฐ์…‰ํ„ฐ(Interceptor)์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ  ๋น„๊ตํ•ด๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ํ‹€๋ฆฐ ๋ถ€๋ถ„์ด ์žˆ๋‹ค๋ฉด ๋Œ“๊ธ€๋กœ ์•Œ๋ ค์ฃผ์„ธ์š” :)HTTP ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋Š” ํ๋ฆ„ - ๋””์ŠคํŒจ์ฒ˜ ์„œ๋ธ”๋ฆฟ์„ ์ค‘์‹ฌ์œผ๋กœ๋ณธ๊ฒฉ์ ์œผ๋กœ ํ•„ํ„ฐ์™€ ์ธํ„ฐ์…‰ํ„ฐ์˜ ๊ฐœ๋…์„ ์•Œ๊ธฐ ์ „์—ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ์„œ๋ฒ„๋กœ ์š”์ฒญ์ด ๋“ค์–ด์˜ฌ ๋•Œ ์–ด๋–ป๊ฒŒ ์ปจํŠธ๋กค๋Ÿฌ๊นŒ์ง€ ๋‹ฟ๋Š”์ง€ ์ดํ•ดํ•  ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.ํ•„ํ„ฐ์™€ ์ธํ„ฐ์…‰ํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋ฉด ๋””์ŠคํŒจ์ฒ˜ ์„œ๋ธ”๋ฆฟ(Dispatcher Servlet)์ด๋ผ๋Š” ์šฉ์–ด๊ฐ€ ๋งŽ์ด ์–ธ๊ธ‰๋˜๊ฑฐ๋“ ์š”. ์ด ๊ธ€์—์„œ๋Š” ํ•„ํ„ฐ์™€ ์ธํ„ฐ์…‰ํ„ฐ๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•œ ์ตœ์†Œํ•œ๋งŒ ๊ฐ„๋žตํžˆ ๋Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ์—์„œ ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด ์ด๋Š” ์„œ๋ฒ„๋กœ ๋“ค์–ด์˜ต๋‹ˆ๋‹ค.์—ฌ๊ธฐ์„œ ์„œ๋ฒ„๊ฐ€ ํ†ฐ์บฃ..
[Spring] DI(Dependency Injection) ์˜์กด์„ฑ ์ฃผ์ž…
ยท
๐ŸŒฟSpring
Spring์˜ ํ•ต์‹ฌ ๊ฐœ๋…์—๋Š” DI(Dependency Injection), IoC(Inversion of Control), AOP(Aspect-Oriented Programming)๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” DI: ์˜์กด์„ฑ ์ฃผ์ž…์˜ ๊ฐœ๋…๊ณผ ํ•„์š”์„ฑ, ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.๐Ÿ“Œ DI: ์˜์กด์„ฑ ์ฃผ์ž…์˜์กด์„ฑ์ด๋ž€?ํ•œ ๊ฐ์ฒด๊ฐ€ ๋‹ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์˜์กด์„ฑ์ด ์žˆ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.์˜ˆ๋ฅผ ๋“ค์–ด `OrderService`๊ฐ€ `OrderRepository`๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด, `OrderService`๋Š” `OrderRepository`์— ์˜์กดํ•ฉ๋‹ˆ๋‹ค.Spring์˜ ํŠน์ง• ์ค‘ ์ œ์–ด์˜ ์—ญ์ „์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•  ๋•Œ๊ฐ์ฒด์˜ ์ƒ์„ฑ๊ณผ ์˜์กด์„ฑ ๊ด€๋ฆฌ๋ฅผ ๊ฐœ๋ฐœ์ž๊ฐ€ ์•„๋‹Œ ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ์˜ IoC ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋‹ด๋‹นํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜์กด์„ฑ ์ฃผ์ž…์€ IoC๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•..
[Spring] IoC ์ œ์–ด์˜ ์—ญ์ „
ยท
๐ŸŒฟSpring
์ด ๊ธ€์—์„œ๋Š” Spring์˜ ํ•ต์‹ฌ ๊ฐœ๋… ์ค‘ IoC(Inversion of Control): ์ œ์–ด์˜ ์—ญ์ „์— ๋Œ€ํ•ด ์•Œ์•„๋ด…๋‹ˆ๋‹ค.๐Ÿ“Œ ์ œ์–ด์˜ ์—ญ์ „ - IoC๋ž€?์ „ํ†ต์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์—์„œ๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์–ธ์ œ ์–ด๋А ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ํ๊ธฐํ• ์ง€, ์–ด๋–ค ํ๋ฆ„์œผ๋กœ ์‹คํ–‰ํ• ์ง€๋ฅผ ๋ชจ๋‘ ์ง์ ‘ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.์ œ์–ด์˜ ์—ญ์ „์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ œ์–ด ํ๋ฆ„์„ ๊ฐœ๋ฐœ์ž๊ฐ€ ์•„๋‹Œ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๊ด€๋ฆฌํ•˜๋„๋ก ํ•˜๋Š” ์›์น™์ž…๋‹ˆ๋‹ค. ์ฆ‰, ๊ฐ์ฒด์˜ ์ƒ์„ฑ๊ณผ ์ƒ๋ช…์ฃผ๊ธฐ, ์˜์กด์„ฑ ๊ด€๋ฆฌ๋ฅผ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ํ•˜์ง€ ์•Š๊ณ , ํ”„๋ ˆ์ž„์›Œํฌ์— ์œ„์ž„ํ•˜๋Š” ๊ฒƒ์ด์ฃ . ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ œ์–ด ๊ถŒํ•œ์ด ๊ฐœ๋ฐœ์ž์—์„œ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ์—ญ์ „๋˜์–ด "์ œ์–ด์˜ ์—ญ์ „"์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค ์ด๋•Œ ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์–ด๋А ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ์ด ์—ญํ• ์„ ํ• ๊นŒ์š”?๐Ÿชฃ IoC ์ปจํ…Œ์ด๋„ˆ์ปจํ…Œ์ด๋„ˆ๋ž€? ๊ฐ์ฒด์˜ ์ƒ์„ฑ, ์ดˆ๊ธฐํ™”, ์†Œ๋ฉธ ๋“ฑ ์ƒ๋ช… ์ฃผ๊ธฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋ฉฐ, ์ƒ์„ฑ๋œ ๊ฐ์ฒด..
Spring์—์„œ ์บ์‹œ ์‚ฌ์šฉํ•˜๊ธฐ: CaffeineCache, @Cacheable, @CachePut, @CacheEvict
ยท
๐ŸŒฟSpring
๐Ÿ”– ๋จผ์ € ์ฝ์œผ๋ฉด ์ข‹์€ ๊ธ€ ๋กœ์ปฌ ์บ์‹œ & ๋ถ„์‚ฐ ์บ์‹œ ์ดํ•ดํ•˜๊ธฐ๐Ÿ”– ๋จผ์ € ์ฝ์œผ๋ฉด ์ข‹์€ ๊ธ€ ์บ์‹œ(Cache) ๊ฐœ๋… ์‰ฝ๊ฒŒ ์ •๋ฆฌํ•˜๊ธฐ๐Ÿš€ ์บ์‹œ(Cache)๋ž€?์ง€๊ธˆ๊นŒ์ง€ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•  ๋•Œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ง์ ‘ ์กฐํšŒํ•ด์™”์Šต๋‹ˆ๋‹ค.๊ฐœ๋ฐœ์„ ๊ณต๋ถ€ํ•ด๋ดค๋‹ค๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ์€ I/O ์ž‘syleeblog.tistory.com์Šคํ”„๋ง ํ”„๋กœ์ ํŠธ์—์„œ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•˜๋Š” ๋ฐ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ์ˆ  ์ค‘ ํ•˜๋‚˜๊ฐ€ ์บ์‹œ์ž…๋‹ˆ๋‹ค. ์ง€๋‚œ ๊ธ€๋“ค์—์„œ ์บ์‹œ ๊ฐœ๋…์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ์Šคํ”„๋ง ํ”„๋กœ์ ํŠธ์— ๋กœ์ปฌ ์บ์‹œ๋ฅผ ์ ์šฉํ•ด๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค.๋Œ€ํ‘œ์ ์ธ ๋กœ์ปฌ ์บ์‹œ Caffeine์„ ์ ์šฉํ•˜๊ณ , `@Cacheable`, `@CachePut`, `@CacheEvict`์™€ ๊ฐ™์€ ์Šคํ”„๋ง์˜ ์บ์‹œ ์–ด๋…ธํ…Œ์ด์…˜์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด๋ด…์‹œ๋‹ค.โš™๏ธ ํ™˜๊ฒฝSpringBoot 3.4.0build...
JWT(Json Web Token) ๊ตฌ์กฐ ์ดํ•ดํ•˜๊ธฐ
ยท
๐ŸŒฟSpring
JWT (JSON Web Token) ์ด๋ž€JWT(JSON Web Token)์ด๋ž€ ์œ ์ €๋ฅผ ์ธ์ฆํ•˜๊ณ  ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•œ JSON ํ† ํฐ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.์ด ํ† ํฐ ๋‚ด์—๋Š” ์‚ฌ์šฉ์ž์˜ ๊ถŒํ•œ ์ •๋ณด์™€ ๊ฐ™์€ ์ธ์ฆ ์ •๋ณด๊ฐ€ Base64 URL ๋ฐฉ์‹์œผ๋กœ ์ธ์ฝ”๋”ฉ๋˜์–ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ† ํฐ์„ HTTP ํ—ค๋”์— ์‹ค์–ด ์‘๋‹ต์„ ๋ณด๋‚ด ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‹๋ณ„ํ•˜๊ณ  ์ธ์ฆ/์ธ๊ฐ€๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.JWT ๊ตฌ์กฐJWT๋Š” ์„ธ ํŒŒํŠธ๋กœ ๋‚˜๋ˆ„์–ด์ง€๋ฉฐ, ๊ฐ ํŒŒํŠธ๋Š” ์ ์œผ๋กœ ๊ตฌ๋ถ„๋ฉ๋‹ˆ๋‹ค.ํ—ค๋”(Header), ํŽ˜์ด๋กœ๋“œ(Payload), ์„œ๋ช…(Signature)์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.ํ—ค๋”(Header)ํ—ค๋”์—๋Š” ํ•ด์‹œ ์•”ํ˜ธํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ํ† ํฐ ํƒ€์ž… ์ •๋ณด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.์•Œ๊ณ ๋ฆฌ์ฆ˜: ์„œ๋ช… ์ƒ์„ฑ์— ์‚ฌ์šฉํ•  ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ข…๋ฅ˜ex) HS256, RS256ํƒ€์ž…: ํ† ํฐ์˜ ํƒ€์ž…, ์—ฌ๊ธฐ์„œ๋Š” JWT๊ฐ€ ๋˜์ฃ .ํŽ˜..
[Spring Security] ์›น ๋ณด์•ˆ ๊ณต๊ฒฉ #2 ์„ธ์…˜ ๊ณ ์ • ๊ณต๊ฒฉ, JWT ํ† ํฐ ํƒˆ์ทจ + ๋Œ€์‘ ์ „๋žต
ยท
๐ŸŒฟSpring
1ํŽธ: https://syleeblog.tistory.com/51 [Spring Security] ์›น ๋ณด์•ˆ ๊ณต๊ฒฉ #1: CSRF๊ณต๊ฒฉ๊ณผ XSS ๊ณต๊ฒฉ + ๋Œ€์‘ ์ „๋žต์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” 4๊ฐ€์ง€ ์ฃผ์š” ๋ณด์•ˆ ๊ณต๊ฒฉ: CSRF ๊ณต๊ฒฉ, XSS ๊ณต๊ฒฉ, ์„ธ์…˜ ๊ณ ์ • ๊ณต๊ฒฉ, JWT ํƒˆ์ทจ ๊ณต๊ฒฉ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ ,์ด๋ฅผ ๋ฐฉ์–ดํ•  ์ˆ˜ ์žˆ๋Š” Spring Security ๋˜๋Š” ์ผ๋ฐ˜์ ์ธ ๋Œ€์‘ ์ „๋žต์„ ์‚ดํŽดsyleeblog.tistory.com ๐Ÿ“Œ์„ธ์…˜ ๊ณ ์ • ๊ณต๊ฒฉ์„ธ์…˜ ๊ณ ์ • ๊ณต๊ฒฉ์€ ๊ณต๊ฒฉ์ž๊ฐ€ ์„ธ์„  ID๋ฅผ ๋ฏธ๋ฆฌ ์ •ํ•ด๋†“๊ณ , ํ”ผํ•ด์ž๊ฐ€ ๊ทธ ์„ธ์…˜์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋งŒ๋“  ๋’ค,ํ”ผํ•ด์ž๊ฐ€ ๊ฐ™์€ ์„ธ์…˜์œผ๋กœ ๋กœ๊ทธ์ธํ–ˆ์„ ๋•Œ ํ”ผํ•ด์ž์˜ ๊ถŒํ•œ์„ ํƒˆ์ทจํ•˜๋Š” ๊ณต๊ฒฉ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์„ธ์…˜ ID๋ฅผ ๋จผ์ € ๋งŒ๋“  ์‚ฌ๋žŒ์ด ๋กœ๊ทธ์ธ ํ›„์—๋„ ๊ณ„์† ๊ทธ ์„ธ์…˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด,๊ณต๊ฒฉ์ž๋Š” ํ”ผํ•ด์ž์˜..
[Spring Security] ์›น ๋ณด์•ˆ ๊ณต๊ฒฉ #1: CSRF๊ณต๊ฒฉ๊ณผ XSS ๊ณต๊ฒฉ + ๋Œ€์‘ ์ „๋žต
ยท
๐ŸŒฟSpring
์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” 4๊ฐ€์ง€ ์ฃผ์š” ๋ณด์•ˆ ๊ณต๊ฒฉ: CSRF ๊ณต๊ฒฉ, XSS ๊ณต๊ฒฉ, ์„ธ์…˜ ๊ณ ์ • ๊ณต๊ฒฉ, JWT ํƒˆ์ทจ ๊ณต๊ฒฉ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ ,์ด๋ฅผ ๋ฐฉ์–ดํ•  ์ˆ˜ ์žˆ๋Š” Spring Security ๋˜๋Š” ์ผ๋ฐ˜์ ์ธ ๋Œ€์‘ ์ „๋žต์„ ์‚ดํŽด๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ๊ธ€์ด ๊ธธ์–ด์ ธ์„œ ๋‘ ํŽธ์— ๋‚˜๋ˆ„์–ด ์”๋‹ˆ๋‹ค.๐Ÿ“Œ CSRF ๊ณต๊ฒฉCSRF๋Š” Cross-Stie Request Forgery์˜ ์ค„์ž„๋ง๋กœ "์‚ฌ์ดํŠธ ๊ฐ„ ์š”์ฒญ ์œ„์กฐ"๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.์ธํ„ฐ๋„ท ์‚ฌ์šฉ์ž๊ฐ€ ์ž์‹ ์˜ ์˜์ง€์™€๋Š” ๋ฌด๊ด€ํ•˜๊ฒŒ ๊ณต๊ฒฉ์ž๊ฐ€ ์˜๋„ํ•œ ํ–‰์œ„๋ฅผ ํŠน์ •ํ•œ ์›น ์‚ฌ์ดํŠธ์— ์š”์ฒญํ•˜๋„๋ก ๋งŒ๋“œ๋Š” ๊ณต๊ฒฉ์ž…๋‹ˆ๋‹ค. CSRF ๊ณต๊ฒฉ์ด ์„ฑ๊ณตํ•˜๋ ค๋ฉด 3๊ฐ€์ง€ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.์‚ฌ์šฉ์ž๋Š” ์„œ๋ฒ„์— ๋กœ๊ทธ์ธ๋˜์–ด ์žˆ๋Š” ์ƒํƒœ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.ํ•ด์ปค(๊ณต๊ฒฉ์ž)๊ฐ€ ์‚ฌ์šฉ์ž์˜ ์„ธ์…˜ ์ •๋ณด๋ฅผ ์ฟ ํ‚ค์—์„œ ์ฝ์„ ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.ํ•ด์ปค(๊ณต๊ฒฉ์ž) ๋Š” ์„œ..