Spring์—์„œ ์บ์‹œ ์‚ฌ์šฉํ•˜๊ธฐ: CaffeineCache, @Cacheable, @CachePut, @CacheEvict
ยท
๐ŸŒฟSpring
๐Ÿ”– ๋จผ์ € ์ฝ์œผ๋ฉด ์ข‹์€ ๊ธ€ ๋กœ์ปฌ ์บ์‹œ & ๋ถ„์‚ฐ ์บ์‹œ ์ดํ•ดํ•˜๊ธฐ๐Ÿ”– ๋จผ์ € ์ฝ์œผ๋ฉด ์ข‹์€ ๊ธ€ ์บ์‹œ(Cache) ๊ฐœ๋… ์‰ฝ๊ฒŒ ์ •๋ฆฌํ•˜๊ธฐ๐Ÿš€ ์บ์‹œ(Cache)๋ž€?์ง€๊ธˆ๊นŒ์ง€ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•  ๋•Œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ง์ ‘ ์กฐํšŒํ•ด์™”์Šต๋‹ˆ๋‹ค.๊ฐœ๋ฐœ์„ ๊ณต๋ถ€ํ•ด๋ดค๋‹ค๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ์€ I/O ์ž‘syleeblog.tistory.com์Šคํ”„๋ง ํ”„๋กœ์ ํŠธ์—์„œ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•˜๋Š” ๋ฐ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ์ˆ  ์ค‘ ํ•˜๋‚˜๊ฐ€ ์บ์‹œ์ž…๋‹ˆ๋‹ค. ์ง€๋‚œ ๊ธ€๋“ค์—์„œ ์บ์‹œ ๊ฐœ๋…์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ์Šคํ”„๋ง ํ”„๋กœ์ ํŠธ์— ๋กœ์ปฌ ์บ์‹œ๋ฅผ ์ ์šฉํ•ด๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค.๋Œ€ํ‘œ์ ์ธ ๋กœ์ปฌ ์บ์‹œ Caffeine์„ ์ ์šฉํ•˜๊ณ , `@Cacheable`, `@CachePut`, `@CacheEvict`์™€ ๊ฐ™์€ ์Šคํ”„๋ง์˜ ์บ์‹œ ์–ด๋…ธํ…Œ์ด์…˜์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด๋ด…์‹œ๋‹ค.โš™๏ธ ํ™˜๊ฒฝSpringBoot 3.4.0build...
๋กœ์ปฌ ์บ์‹œ & ๋ถ„์‚ฐ ์บ์‹œ ์ดํ•ดํ•˜๊ธฐ
ยท
โš™๏ธ CS & ๊ธฐํƒ€ ๊ฐœ๋ฐœ ์ž๋ฃŒ
๐Ÿ”– ๋จผ์ € ์ฝ์œผ๋ฉด ์ข‹์€ ๊ธ€ ์บ์‹œ(Cache) ๊ฐœ๋… ์‰ฝ๊ฒŒ ์ •๋ฆฌํ•˜๊ธฐ๐Ÿš€ ์บ์‹œ(Cache)๋ž€?์ง€๊ธˆ๊นŒ์ง€ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•  ๋•Œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ง์ ‘ ์กฐํšŒํ•ด์™”์Šต๋‹ˆ๋‹ค.๊ฐœ๋ฐœ์„ ๊ณต๋ถ€ํ•ด๋ดค๋‹ค๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ์€ I/O ์ž‘์—…์˜ ์˜ํ–ฅ์ด ํฌ๋‹ค๋Š” ๋ง์„ ๋“ค์–ด๋ดค์„ ๊ฒ๋‹ˆ๋‹ค.๊ทธ๋งŒํผ ์žฆ์€ Dsyleeblog.tistory.com์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ๋‚˜ ๋ฐ˜๋ณต์ ์œผ๋กœ ์กฐํšŒ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์บ์‹œ์— ์ €์žฅํ•˜๋ฉด,๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํ˜ธ์ถœํ•˜์ง€ ์•Š๊ณ ๋„ ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” ์บ์‹œ๋ฅผ ๋กœ์ปฌ ์บ์‹œ์™€ ๋ถ„์‚ฐ ์บ์‹œ๋กœ ๋‚˜๋ˆ„์–ด ์•Œ์•„๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.โœ… ๋กœ์ปฌ ์บ์‹œ๋กœ์ปฌ ์บ์‹œ๋Š” ๊ฐ ์„œ๋ฒ„๋งˆ๋‹ค ๋‚ด์žฅ ์บ์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ „๋žต์ž…๋‹ˆ๋‹ค.์ฆ‰, ๋กœ์ปฌ ์บ์‹œ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„ ๋‚ด๋ถ€์— ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. Spring์—์„œ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„์˜ JVM ๋ฉ”๋ชจ๋ฆฌ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.Spring์—..
์บ์‹œ(Cache) ๊ฐœ๋… ์‰ฝ๊ฒŒ ์ •๋ฆฌํ•˜๊ธฐ
ยท
โš™๏ธ CS & ๊ธฐํƒ€ ๊ฐœ๋ฐœ ์ž๋ฃŒ
๐Ÿš€ ์บ์‹œ(Cache)๋ž€?์ง€๊ธˆ๊นŒ์ง€ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•  ๋•Œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ง์ ‘ ์กฐํšŒํ•ด์™”์Šต๋‹ˆ๋‹ค.๊ฐœ๋ฐœ์„ ๊ณต๋ถ€ํ•ด๋ดค๋‹ค๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ์€ I/O ์ž‘์—…์˜ ์˜ํ–ฅ์ด ํฌ๋‹ค๋Š” ๋ง์„ ๋“ค์–ด๋ดค์„ ๊ฒ๋‹ˆ๋‹ค.๊ทธ๋งŒํผ ์žฆ์€ DB ์ ‘๊ทผ์€ ๋ถ€๋‹ด์ด ๋˜๋ฉฐ ์†๋„๋„ ๋А๋ฆฝ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด, ์ž์ฃผ ์กฐํšŒํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋” ๋นจ๋ฆฌ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†์„๊นŒ์š”? ๋ฐ”๋กœ ์บ์‹œ๊ฐ€ ๊ทธ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.์บ์‹œ(Cache)๋ž€, ์ž์ฃผ ์กฐํšŒํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ์ž„์‹œ ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„์„ ๋งํ•ฉ๋‹ˆ๋‹ค.์บ์‹œ๋ฅผ ์ด์šฉํ•ด ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ์‹œ๊ฐ„์„ ์ค„์ด๊ณ , ์„œ๋ฒ„์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ถ€ํ•˜๋ฅผ ์ค„์—ฌ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์บ์‹œ์˜ ๋ชฉ์ ์€ ๋น ๋ฅธ ๋ฐ์ดํ„ฐ ์กฐํšŒ๋ฅผ ํ†ตํ•ด ์‘๋‹ต ์‹œ๊ฐ„์„ ๋‹จ์ถ•ํ•˜๊ณ , ์‹œ์Šคํ…œ ๋ถ€ํ•˜์™€ ๋น„์šฉ์„ ์ค„์ด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์—์„œ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๋Š” ์†๋„๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ..
[Java] ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ์˜ ๊ฒฝ์Ÿ ์ƒํƒœ์™€ ํ•ด๊ฒฐ ์ „๋žต ์ •๋ฆฌ
ยท
โ˜•Java
๐Ÿš€ ๊ฒฝ์Ÿ ์ƒํƒœ [OS] ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ์—์„œ ๊ฒฝ์Ÿ ์ƒํƒœ ํ•ด๊ฒฐ: ์ƒํ˜ธ ๋ฐฐ์ œ (๋ฎคํ…์Šค์™€ ์„ธ๋งˆํฌ์–ด)๐Ÿ“Œ ์˜ค๋Š˜ ์ฃผ์ œ์ธ ๊ฒฝ์Ÿ ์ƒํƒœ์™€ ์ƒํ˜ธ ๋ฐฐ์ œ๋Š” ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ์™ธ์—๋„ ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์Šค์—์„œ๋„ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ด์ง€๋งŒ์ œ๊ฐ€ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ์— ๋Œ€ํ•ด ๋ฐฐ์šฐ๋ฉฐ ์ •๋ฆฌํ•œ ๋‚ด์šฉ์œผ๋กœ, ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ์— ๋Œ€ํ•ด์„œ๋งŒ ์ค‘์ ์ syleeblog.tistory.com ์ด์ „ ๊ธ€์—์„œ๋Š”์šด์˜ ์ฒด์ œ ๊ด€์ ์—์„œ ๊ฒฝ์Ÿ ์ƒํƒœ์˜ ์ •์˜ ๊ทธ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ์ƒํ˜ธ ๋ฐฐ์ œ์— ๋Œ€ํ•ด ์•Œ์•„๋ดค์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š”๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ๋ฅผ ์ง€์›ํ•˜๋Š” Java์—์„œ ๊ฒฝ์Ÿ ์ƒํƒœ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ ํ•ด๊ฒฐ ์ „๋žต์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด์ „ ๊ธ€์—์„œ ๊ฒฝ์Ÿ ์ƒํƒœ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ๋‹ค๋ฃจ์—ˆ๋Š”๋ฐ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ •๋ฆฌํ•˜์ž๋ฉด๊ฒฝ์Ÿ ์ƒํƒœ(Race Condition)๋ž€, ๋‘˜ ์ด์ƒ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ๊ฐ™์€ ์ž์›์— ์ ‘๊ทผํ•˜๊ณ  ์ˆ˜์ •ํ•˜๋ ค๊ณ  ํ•  ๋•Œ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ ๊ณต์œ  ์ž์›..
[OS] ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ์—์„œ ๊ฒฝ์Ÿ ์ƒํƒœ ํ•ด๊ฒฐ: ์ƒํ˜ธ ๋ฐฐ์ œ (๋ฎคํ…์Šค์™€ ์„ธ๋งˆํฌ์–ด)
ยท
โš™๏ธ CS & ๊ธฐํƒ€ ๊ฐœ๋ฐœ ์ž๋ฃŒ
๐Ÿ“Œ ์˜ค๋Š˜ ์ฃผ์ œ์ธ ๊ฒฝ์Ÿ ์ƒํƒœ์™€ ์ƒํ˜ธ ๋ฐฐ์ œ๋Š” ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ์™ธ์—๋„ ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์Šค์—์„œ๋„ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ด์ง€๋งŒ์ œ๊ฐ€ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ์— ๋Œ€ํ•ด ๋ฐฐ์šฐ๋ฉฐ ์ •๋ฆฌํ•œ ๋‚ด์šฉ์œผ๋กœ, ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ์— ๋Œ€ํ•ด์„œ๋งŒ ์ค‘์ ์ ์œผ๋กœ ์–ธ๊ธ‰ํ–ˆ์Šต๋‹ˆ๋‹ค.์ฐฉ์˜ค๊ฐ€ ์—†์œผ์‹œ๊ธธ!โœ… ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ๋ž€?์ด์ „ ๊ธ€์—์„œ ์Šค๋ ˆ๋“œ์˜ ๊ฐœ๋…์„ ์‚ดํŽด๋ดค์Šต๋‹ˆ๋‹ค. โš™๏ธ ํ”„๋กœ์„ธ์Šค / ์Šค๋ ˆ๋“œ ๊ฐœ๋… ์ •๋ฆฌ๐Ÿ“Œ ์š”์•ฝํ”„๋กœ๊ทธ๋žจ: ์–ด๋А ์ž‘์—…์„ ํ•˜๊ธฐ ์œ„ํ•ด ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋Š” ํŒŒ์ผํ”„๋กœ์„ธ์Šค: ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ€๊ณ , ์šด์˜์ฒด์ œ๋กœ๋ถ€ํ„ฐ CPU๋ฅผ ํ• ๋‹น๋ฐ›์•„ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ์Šค๋ ˆ๋“œ: ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ๋…๋ฆฝ์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š”syleeblog.tistory.com ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ๋ž€ ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค ์•ˆ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ์žˆ๋Š” ์ƒํƒœ๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค.์ฆ‰, ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค ์•ˆ์—์„œ ๋‘ ๊ฐ€์ง€ ์ด์ƒ์˜ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํฌ๋กฌ์—์„œ ์—ฌ๋Ÿฌ ์ฐฝ์„ ๋„์›Œ ๊ฐ์ž ์ž‘์—…..
โš™๏ธ ํ”„๋กœ์„ธ์Šค(Process) / ์Šค๋ ˆ๋“œ(Thread) ๊ฐœ๋… ์ •๋ฆฌ
ยท
โš™๏ธ CS & ๊ธฐํƒ€ ๊ฐœ๋ฐœ ์ž๋ฃŒ
๐Ÿ“Œ ์š”์•ฝํ”„๋กœ๊ทธ๋žจ: ์–ด๋А ์ž‘์—…์„ ํ•˜๊ธฐ ์œ„ํ•ด ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋Š” ํŒŒ์ผํ”„๋กœ์„ธ์Šค: ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ€๊ณ , ์šด์˜์ฒด์ œ๋กœ๋ถ€ํ„ฐ CPU๋ฅผ ํ• ๋‹น๋ฐ›์•„ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ์Šค๋ ˆ๋“œ: ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ๋…๋ฆฝ์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ํ๋ฆ„ ๋‹จ์œ„โœ… ํ”„๋กœ์„ธ์Šค (Process)ํ”„๋กœ์„ธ์Šค๋Š” ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ํ”„๋กœ๊ทธ๋žจ์€ ๋ฌด์—‡์ผ๊นŒ์š”? ํ”„๋กœ๊ทธ๋žจ์€ ์ปดํ“จํ„ฐ์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํŒŒ์ผ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.๋‹ค๋งŒ ์•„์ง ํŒŒ์ผ์„ ์‹คํ–‰ํ•˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ๊ทธ๋ƒฅ ํŠน์ •ํ•œ ์ž‘์—…์„ ์œ„ํ•ด ์ž‘์„ฑ๋œ ์ฝ”๋“œ ๋ฉ์–ด๋ฆฌ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ์šด์˜์ฒด์ œ๊ฐ€ ์‚ฌ์šฉ์ž์˜ ์‹คํ–‰ ์š”์ฒญ์— ์˜ํ•ด ๋””์Šคํฌ์— ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฌ๊ณ  ์‹คํ–‰ํ•˜๋ฉด ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ๋””์Šคํฌ ๋‚ด์—์„œ ์ผ๋ฐ˜์ ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์€ text, data, bss๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.text(code)์ฝ”๋“œ.CPU๊ฐ€ ์‹ค์ œ๋กœ ์‹คํ–‰ํ•  ๊ธฐ๊ณ„์–ด ๋ช…๋ น์–ด์˜ ..
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๊ฐ€์ง€ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.์‚ฌ์šฉ์ž๋Š” ์„œ๋ฒ„์— ๋กœ๊ทธ์ธ๋˜์–ด ์žˆ๋Š” ์ƒํƒœ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.ํ•ด์ปค(๊ณต๊ฒฉ์ž)๊ฐ€ ์‚ฌ์šฉ์ž์˜ ์„ธ์…˜ ์ •๋ณด๋ฅผ ์ฟ ํ‚ค์—์„œ ์ฝ์„ ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.ํ•ด์ปค(๊ณต๊ฒฉ์ž) ๋Š” ์„œ..