CSRF ๐ฅ CSRF (์ฌ์ดํธ ๊ฐ ์์ฒญ ์์กฐ, Cross-Site Ruquest Forgery) ๊ณต๊ฒฉ์๊ฐ ์ธ์ฆ๋ ๋ธ๋ผ์ฐ์ ์ ์ ์ฅ๋ ์ฟ ํค์ ์ธ์
์ ๋ณด๋ฅผ ํ์ฉํ์ฌ ์น ์๋ฒ์ ์ฌ์ฉ์๊ฐ ์๋ํ์ง ์์ ์์ฒญ์ ์ ๋ฌํ๋ ๊ฒ CSRF ์ค์ ์ด ๋์ด์๋ ๊ฒฝ์ฐ html์์ CSRF ํ ํฐ ๊ฐ์ ๋๊ฒจ์ฃผ์ด์ผ ์์ฒญ์ ์์ ๊ฐ๋ฅ ์ฟ ํค ๊ธฐ๋ฐ์ ์ทจ์ฝ์ ์ ์ด์ฉํ ๊ณต๊ฒฉ์ด๊ธฐ ๋๋ฌธ์ REST ๋ฐฉ์์ API์์๋ disable ๊ฐ๋ฅ POST ์์ฒญ๋ง๋ค ์ฒ๋ฆฌํด์ฃผ๋ ๋์ CSRF protection์ disable Spring Security - Filter Chain Spring ์์ ๋ชจ๋ ํธ์ถ์ DispatcherServlet์ ํต๊ณผํ๊ฒ ๋๊ณ ์ดํ์ ๊ฐ ์์ฒญ์ ๋ด๋นํ๋ Controller๋ก ๋ถ๋ฐฐ ์ด ๋, ๊ฐ ์์ฒญ์ ๋ํด์ ๊ณตํต์ ์ผ๋ก ์ฒ๋ฆฌํด์ผ ํ ..
์ ์ฒด ๊ธ
ํํฐ Filter๋ ์น ์ ํ๋ฆฌ์ผ์ด์
์์ ๊ด๋ฆฌ๋๋ ์์ญ์ผ๋ก Client๋ก๋ถํฐ ์ค๋ ์์ฒญ๊ณผ ์๋ต์ ๋ํด ์ต์ด/์ต์ข
๋จ๊ณ์ ์์น์ด๋ฉฐ, ์ด๋ฅผ ํตํด ์์ฒญ๊ณผ ์๋ต์ ์ ๋ณด๋ฅผ ๋ณ๊ฒฝํ๊ฑฐ๋ ๋ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ ์ถ๊ฐ ๊ฐ๋ฅ ์ฃผ๋ก ๋ฒ์ฉ์ ์ผ๋ก ์ฒ๋ฆฌํด์ผ ํ๋ ์์
๋ค, ์๋ฅผ ๋ค์ด ๋ก๊น
๋ฐ ๋ณด์ ์ฒ๋ฆฌ์ ํ์ฉ ๋ํ ์ธ์ฆ, ์ธ๊ฐ๊ฐ ๊ด๋ จ๋ ๋ก์ง๋ค์ ์ฒ๋ฆฌ ๊ฐ๋ฅ Filter๋ฅผ ์ฌ์ฉํ๋ฉด ์ธ์ฆ, ์ธ๊ฐ์ ๊ด๋ จ๋ ๋ก์ง์ ๋น์ฆ๋์ค ๋ก์ง๊ณผ ๋ถ๋ฆฌํ์ฌ ๊ด๋ฆฌํ ์ ์๋ค๋ ์ฅ์ ์กด์ฌ Filter Chain ํํฐ๋ ์ฌ๋ฌ ๊ฐ๊ฐ Chain ํ์์ผ๋ก ๋ฌถ์ฌ์ ์ฒ๋ฆฌ ๊ฐ๋ฅ ํํฐ ์ ์ฉ ์์ฒญ URL์ ์ธ๊ฐ ์ฒ๋ฆฌ ๋ฐ ์ธ์ฆ ์ฒ๋ฆฌ ์งํํ๋ ํํฐ ๊ตฌํ ์ถ๊ฐ๋ก ์์ฒญ URL์ ๋ก๊น
ํด์ฃผ๋ ํํฐ ๊ตฌํ Request URL Logging @Slf4j(topic = "LoggingFilter") @..
JWT Json Web Token ์ด๋, JSON ํฌ๋งท์ ์ด์ฉํ์ฌ ์ฌ์ฉ์์ ๋ํ ์์ฑ์ ์ ์ฅํ๋ clain ๊ธฐ๋ฐ์ Web Token ์ฆ, ํ ํฐ์ ํ ์ข
๋ฅ ์ผ๋ฐ์ ์ผ๋ก ์ฟ ํค ์ ์ฅ์๋ฅผ ์ฌ์ฉํ์ฌ JWT ์ ์ฅ ์ฌ์ฉ ์ด์ ์๋ฒ๊ฐ 1๋์ธ ๊ฒฝ์ฐ Session1์ด ๋ชจ๋ client์ ๋ก๊ทธ์ธ ์ ๋ณด๋ฅผ ์์ ์๋ฒ๊ฐ 2๋ ์ด์์ธ ๊ฒฝ์ฐ ์๋ฒ์ ๋์ฉ๋ ํธ๋ํฝ์ ์ฒ๋ฆฌ๋ฅผ ์ํด ์๋ฒ 2๋ ์ด์ ์ด์์ด ํ์ Session ๋ง๋ค ๋ค๋ฅธ Client ๋ก๊ทธ์ธ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์์ ์ ์์ ๋ง์ฝ Client1์ ๋ก๊ทธ์ธ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์์ง ์์ Server2 ๋ Server3์ API ์์ฒญ์ ํ๊ฒ ๋๋ฉด? ํด๊ฒฐ ๋ฐฉ๋ฒ 1) Sticky Session : Client ๋ง๋ค ์์ฒญ Server ๊ณ ์ 2) ์ธ์
์ ์ฅ์๋ฅผ ์์ฑํ์ฌ ๋ชจ๋ ์ธ์
์ ์ฅ ์ธ์
์ ์ฅ์ ์..
์ฟ ํค์ ์ธ์
์ฟ ํค์ ์ธ์
๋ชจ๋ HTTP ์ ์ํ ์ ๋ณด๋ฅผ ์ ์ง(Stateful)ํ๊ธฐ ์ํด ์ฌ์ฉ ์ฆ, ์ฟ ํค์ ์ธ์
์ ํตํด ์๋ฒ์์๋ ํด๋ผ์ด์ธํธ ๋ณ๋ก ์ธ์ฆ ๋ฐ ์ธ๊ฐ ๊ฐ๋ฅ ์ฟ ํค ํด๋ผ์ด์ธํธ์ ์ ์ฅ๋ ๋ชฉ์ ์ผ๋ก ์์ฑํ ์์ ์ ๋ณด๋ฅผ ๋ด์ ํ์ผ ๋๋ฉ์ธ ๋ณ๋ก ์ ์ฅ๋์ด ์์ ๊ตฌ์ฑ์์ Name : ์ฟ ํค๋ฅผ ๊ตฌ๋ณํ๋๋ฐ ์ฌ์ฉ๋๋ ํค(์ค๋ณตx) Value : ์ฟ ํค์ ๊ฐ Domain : ์ฟ ํค๊ฐ ์ ์ฅ๋ ๋๋ฉ์ธ Path : ์ฌ์ฉ๋๋ ๊ฒฝ๋ก Expires : ๋ง๋ฃ๊ธฐํ ์ธ์
์๋ฒ์์ ์ผ์ ์๊ฐ ๋์ ํด๋ผ์ด์ธํธ์ ์ํ๋ฅผ ์ ์งํ๊ธฐ ์ํด ์ฌ์ฉ ์๋ฒ์์ ํด๋ผ์ด์ธํธ ๋ณ๋ก ์ ์ผํ '์ธ์
ID'๋ฅผ ๋ถ์ฌํ ํ ํ์ํ ์ ๋ณด๋ฅผ ์๋ฒ์ ์ ์ฅ '์ธ์
ID'๋ ํด๋ผ์ด์ธํธ์ ์ฟ ํค๊ฐ์ผ๋ก ์ ์ฅ๋์ด ํด๋ผ์ด์ธํธ ์๋ณ์ ์ฌ์ฉ๋จ ๋์ ๋ฐฉ์ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ..
์ด์ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ๋ฅผ ํ์ง๋ชปํ๋ค... ํ๋ฃจ์ 2๋ฌธ์ ํธ๋๊ฒ ๊ณํ์ธ๋ฐใ
ใ
ใ
ใ
ใ
๊ทธ๋์ ์ค๋์ 4๋ฌธ์ !!! ํ์ด๋ฐ~! ์์ฆ ๋ฌผ์ฃผ๊ธฐ ์ํธ์ง ๋ณด๋ ์ฌ๋ฏธ์ ํน~ ๊ฝค๋ ์ฑ์ทจ๊ฐ์ด ๋๊ปด์ง๋ ๋ฐฉ์!!!! ๊ทธ๋ฆฌ๊ณ ์ค๋๋ ๋ฉด์ ์ค๋น๊ฐ ๊ฑฐ์ ๋ค ์ฐจ์ง...ใ
๊ฒฐ๊ตญ ์ด์ ๋ค์ง ์ค๋ ๋ชป์งํด ์ด์ ํ ๋ค์ง ์ค๋๋ ! ๋ด์ผ์ ์ ๋ถ ๋ค ํ์ ๋๋ฌด ํ๋์๋ง ๋ชฐ๋ํ๋ ๊ฒ๋ ์ข์ง ์๋ค
์ค๋์ 9์๊น์ง ์ผ์ด๋๊ธฐ ์คํจํ๋ค... ์ด์ , ์ค๋ ๋ค ๋งค๋์ ๋๊ป ์ ํ๋ฐ์๋ฐ... ๐ด Spring security, JWT๋ฅผ ์ด์ฉํ ํ์๊ฐ์
/๋ก๊ทธ์ธ, Validation ์ ๋ํด ํ์ตํ๋ค. ์ฝ๋๋ฅผ ์ง๊ณ , ๊ธฐ๋ฅ์ ๊ตฌํํจ์ ์์ด์ ํฐ ๋ฌธ์ ๋ ์์ง๋ง, ์์ง ์ด๋ก ์ ์ฝํ๋ค๋ ๊ฒ์ ๋ ๋๊ผ๋ค.... ๋ด์ผ 1์ฃผ์ฐจ ๊ณผ์ ๋ฅผ ์งํํ๊ธฐ ์ ์ ํ ๋ฒ๋ ๋ฃ๊ณ ์ ๋ฆฌํ ํ์ ๊ณผ์ ๋ฅผ ์งํํด์ผ๊ฒ ๋น..... ์ฌ์ค ์์ฆ ๋ฉด์ ์ค๋น๋ฅผ ํ๋๋ผ ๋๋ฌด ์ ์ ์ด ์๋ค..... ๊ทธ๋์ ๋ญ๊ฐ ๋ด๋ฐฐ์บ ์ ๋๋ฌด ์ ๊ฒฝ์ ๋ชป์ด ๋๋ ์ด๋์๋ ์๋๋ค. ๋ค์ ์ด์ฌ์ ์ฐพ๊ณ ,!!!!!!!!!!! ์๊ฐ์ ์ ํํ ์ ํ๊ณ ! ๋ด ์งํ์ง ์๊ณ ! ๊ณํ ๋นก! ์ธ์์ ๋ ๋ง๋ฆฌ, ์ธ ๋ง๋ฆฌ ํ ๋ผ ๋ค ๋จน๋๋ค!!!๐ฐ๐ฐ๐ฐ๐ฐ๐ฐ๐ฐ๐ฐ๐ฐ๐ฐ
์คํ๋ง ์๋ จ ์ฃผ์ฐจ ๊ฐ์ ์์! ๋น ์๋ ๋ฑ๋ก ๋ฐฉ๋ฒ, ๋์ผํ ํ์
์ ๋น์ด ์ฌ๋ฌ ๊ฐ์ผ ๊ฒฝ์ฐ, ์ธ์ฆ๊ณผ ์ธ๊ฐ๋์ ๋ํด ๊ฐ์๋ฅผ ๋ค์๋ค. ๊ฑฐ์ ๋น์ @Component ์ ๋
ธํ
์ด์
์ ์ด์ฉํด์ ์๋ ์ค์บ์ ํตํด ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ , ์๋์ผ๋ก ๋ฑ๋กํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์ค์ต์ ํด๋ณธ ๊ฒ์ ๊ฑฐ์ ์ฒ์์ด์๋ค 'ํธํ ์๋ ๋ฑ๋ก์ด ์๋๋ฐ ์ ์๋์ ์ฌ์ฉํ์ง..?' ํ๋๋ฐ ๊ณตํต ๋ก์ง์ด๋ ์๋ฌ ์ ์ฐพ๊ธฐ ์ฝ๋๋ก ์๋ ๋ฑ๋ก์ ํ๋ค๋ ๊ฒ์ ์์๋ค. ๊ทธ๋ฆฌ๊ณ ๋์ผํ ํ์
์ ๋น์ ๋ํด ๋ง๋ค์ด ๋ณธ์ ์ด ์์ด์, @Qualifier, @Primary ์ ๋ํด์๋ ๋ชฐ๋๋๋ฐ @Qualifier("name")๋ ์ด๋ฆ ์ค์ , @Primary๋ ์ฐ์ ๊ถ ๋ถ์ฌ ์ธ ๊ฒ์ผ๋ก ์ดํดํ๋ค! ์ธ์ฆ๊ณผ ์ธ๊ฐ์ ์ฐจ์ด์ ์ด ๊ต์ฅํ ํท๊ฐ๋ ธ๋๋ฐ, ์ธ์ฆ์ ๋ก๊ทธ์ธ! ์ธ๊ฐ๋ ํ์/..
์ธ์ฆ๊ณผ ์ธ๊ฐ ์ธ์ฆ(Authentication) ํด๋น ์ ์ ๊ฐ ์ค์ ์ ์ ์ธ์ง ์ธ์ฆ(ํ์ธ) ๊ฐ๋
ex. ์ค๋งํธํฐ ์ง๋ฌธ์ธ์, ๋ก๊ทธ์ธ ๋ฑ ์ธ๊ฐ(Authorization) ํด๋น ์ ์ ๊ฐ ํน์ ๋ฆฌ์์ค์ ์ ๊ทผ ๊ฐ๋ฅ ์ฌ๋ถ ํ๊ฐ ํ์ธ ๊ฐ๋
ex. ๊ด๋ฆฌ์ ํ์ด์ง - ๊ด๋ฆฌ์ ๊ถํ ์น ์ ํ๋ฆฌ์ผ์ด์
์ธ์ฆ์ ํน์์ฑ ์ผ๋ฐ์ ์ผ๋ก ์๋ฒ - ํด๋ผ์ด์ธํธ ๊ตฌ์กฐ, ๋ฌผ๋ฆฌ์ ๊ฑฐ๋ฆฌ ์กด์ฌ HTTP ํ๋กํ ์ฝ์ ์ด์ฉํ์ฌ ํต์ -> ๋น์ฐ๊ฒฐ์ฑ(Connectionless) ๋ฌด์ํ(Stateless)๐ ๋น์ฐ๊ฒฐ์ฑ(Connectionless) : ์๋ฒ์ ํด๋ผ์ด์ธํธ๊ฐ ์ฐ๊ฒฐ๋์ง ์์์ ์๋ฏธ ์ฑํ
์ด๋ ๊ฒ์๊ฐ์ ๊ฒ์ ํ์ง ์๋ ์ด์ ์๋ฒ์ ํด๋ผ์ด์ธํธ๋ ์ค์ ๋ก ์ฐ๊ฒฐ โ -> ๋ฆฌ์์ค ์ ์ฝ์ ์ํด ์๋ฒ๋ ํ๋์ ์์ฒญ์ ํ๋์ ์๋ต์ ์ฃผ๊ณ ์ฐ๊ฒฐ ๋์ ๐ ๋ฌด์ํ(Stateless)..