์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- ๋ ผ๋ธ๋กํน
- ์ค๋ธ์
- ์๊ณ ๋ฆฌ์ฆ
- docker
- db์ ๋ต
- ํฌ๋ก์ค์ฌ์ดํธ ์คํฌ๋ฆฝํธ
- Node.js
- CICD
- spring scheduler
- ์ฝ๋ฉํ ์คํธ
- injection๊ณต๊ฒฉ
- java์ฑํ
- Jenkins
- Personal Access Token
- docker network
- ์๋ฐ
- GoogleLogin
- spring
- Java
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- db์ํคํ ์ณ
- React
- oauth
- ์ฝํ
- @scheduler
- ๋์์ธํจํด
- MySQL
- dockerhub
- SpringBoot
- node.js mysql ์ฐ๋
- Today
- Total
๋ชฉ๋ก๐ CS Information (5)
<Hello Hosung๐/>
1. JWT๋ ๋ฌด์์ธ๊ฐ?JWT๋ JSON Web Token์ ์ฝ์๋ก, ์ฌ์ฉ์์ ์ธ์ฆ ์ ๋ณด์ ๊ด๋ จ๋ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ฒ ์ ์กํ๊ธฐ ์ํ ์ธ์ฆ ํ ํฐ์ ๋๋ค. JWT๋ ์ธ ๊ฐ์ง ์ฃผ์ ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค:ํค๋(Header): ํ ํฐ์ ํ์ ๊ณผ ์ฌ์ฉ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋ช ์ํฉ๋๋ค.ํ์ด๋ก๋(Payload): ์ธ์ฆ์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ด๊ณ ์์ผ๋ฉฐ, ์ด ๋ฐ์ดํฐ๋ ํ ํฐ์ ๋ฐ๊ธํ ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ์ ์ฃผ๊ณ ๋ฐ์ ์ ์์ต๋๋ค.์๋ช (Signature): ํ ํฐ์ ๋ฌด๊ฒฐ์ฑ์ ๊ฒ์ฆํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ์ํธํ๋ ๋ถ๋ถ์ ๋๋ค.JWT๋ ์ธ ๋ถ๋ถ์ด .(์ )์ผ๋ก ๊ตฌ๋ถ๋์ด ์์ต๋๋ค: header.payload.signature.2. JWT์ ์๋ ์๋ฆฌJWT์ ์๋ ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:๋ก๊ทธ์ธ: ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธ ์, ์๋ฒ๋ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ํ์ธํ ํ JWT๋ฅผ ์์ฑํฉ..
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํต์ฌ์ ๋๋ค. ๋ฐ์ดํฐ๊ฐ ๋์ด๋๊ณ ์ฌ์ฉ์ ์์ฒญ์ด ๋ณต์กํด์ง์๋ก, ํจ์จ์ ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ์ ์ํคํ ์ฒ๋ ํ์์ ์ ๋๋ค. ์ด๋ฒ ๊ธ์์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ ์ ๊ณ ๋ คํ ์ ์๋ ๋ค์ํ ์ํคํ ์ฒ๋ฅผ ์์ธํ ์ค๋ช ํ๊ณ , ๊ฐ ์ํคํ ์ฒ๊ฐ ์ ํฉํ ๊ฒฝ์ฐ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์ดํด๋ฅผ ๋๊ธฐ ์ํด ๊ทธ๋ฆผ๊ณผ ํจ๊ป ์ค๋ช ํ๋ ๋๊น์ง ์ฝ์ด๋ณด์ธ์! ๐1. ๋จ์ผ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ํคํ ์ฒ (Single Database Architecture)๊ฐ์๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์ํคํ ์ฒ๋ก, ๋ชจ๋ ๋ฐ์ดํฐ ์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ ์์ ์ด ํ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฒ๋ฆฌ๋ฉ๋๋ค. ์๊ท๋ชจ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ฉฐ, ๋จ์ํ ๊ตฌ์กฐ ๋๋ถ์ ๋น ๋ฅด๊ฒ ๊ตฌ์ถํ ์ ์์ต๋๋ค.ํน์ง์ฅ์ :๊ตฌํ๊ณผ ๊ด๋ฆฌ๊ฐ ๊ฐ๋จํ์ฌ ๊ฐ๋ฐ ์ด๊ธฐ ๋จ๊ณ์ ์ ํฉ.๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๋ฉฐ, ๋ณต์กํ ๋..
๋ถ๋ช ๊ฐ๋ฐ์ ํ๋ค๋ณด๋ฉด ๋ธ๋กํน ๊ตฌ์กฐ๋ ์ด์ฉ๊ตฌ ์ ์ฉ๊ตฌ~, ๋ ผ๋ธ๋กํน ๊ตฌ์กฐ๋ ์ด์ฉ๊ตฌ ์ ์ฉ๊ตฌ~์ด๋ฐ ์ด์ผ๊ธฐ๋ฅผ ๋ค์ด ๋ดค์๊ฑฐ์์๐ ์ ๋ํ ๋ธ๋กํน, ๋ ผ๋ธ๋กํน์ ๋ํด์ ๊ฐ๋ณ๊ฒ ์๊ณ ์์ด ์ข ๋ ๋ณต์ต ๋ฐ ๊ณต์ ํ ๊ฒธ ์ค๋ ์ด๋ ๊ฒ ์ ๋ฆฌ๋ฅผ ํ๊ฒ ๋์์ด์๋จผ์ ๋ธ๋กํน๊ณผ ๋ ผ๋ธ๋กํน์ ๋ํ ์ฐจ์ด์ ๋ํด์ ๋ฐฐ์ฐ๊ธฐ์ ๊ฐ๊ฐ ์ด๋ค ๊ฐ๋ ์ธ์ง ๋จผ์ ์ค๋ช ์ ํ๋ฉด ์๋์ ๊ฐ์์.๋ธ๋กํน (Blocking)๋ธ๋กํน ๋ชจ๋์์๋ ์ด๋ค ์์ ์ด ์๋ฃ๋ ๋๊น์ง ๊ทธ ์์ ์ ์์ฒญํ ํ๋ก์ธ์ค๋ ์ค๋ ๋๊ฐ ๋ฉ์ถฐ ์๋ค. ์ฆ, ์์ฒญ์ด ์๋ฃ๋ ๋๊น์ง ํด๋น ํ๋ก์ธ์ค๋ ์ค๋ ๋๋ ๋ค๋ฅธ ์์ ์ ์งํํ ์ ์๋ค. ๋ ผ๋ธ๋กํน (Non-Blocking)๋ ผ๋ธ๋กํน ๋ชจ๋์์๋ ์์ ์ ์์ฒญํ๊ณ ๊ทธ ์์ ์ด ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ์ง ์๋๋ค. ์์ฒญ ํ, ์์ ์ด ์๋ฃ๋๋ฉด ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ๊ฑฐ๋ ํ์ ์ฒ๋ฆฌ๋ฅผ ํฉ..

SQL Injection ์ ๋ง ๊ทธ๋๋ก SQL ๊ตฌ๋ฌธ์ ์ทจ์ฝ์ ์ ์ด์ฉํ์ฌ ๊ณต๊ฒฉํ๋ ๋ฐฉ์์ ๋๋ค.์๋ฅผ ๋ค์ด ๋ก๊ทธ์ธ์ ํด๋น ์ ์ ์ ์์ด๋์ ํจ์ค์๋๊ฐ ๋ง๋์ง ๊ฒ์ฌํ๊ธฐ ์ํด ์๋์ ๊ฐ์ ๊ตฌ๋ฌธ์ ์ฌ์ฉํ ๊ฒ์ผ๋ก ์๊ฐ๋ฉ๋๋ค.//SELECT * FROM USER WHERER ID='' AND PW =''; ๋ง์ฝ ์์ด๋ ์ ๋ ฅ์ฐฝ์ TESTID' ๋ฅผ ์ ๋ ฅํ๊ฒ ๋๋ฉด '๊ฐ ํ๋ ๋์ฐํ์ ์ค๋ฅ//SELECT * FROM USER WHERER ID='TESTID'' AND PW ='';๋ง์ฝ ์์ด๋ ์ ๋ ฅ์ฐฝ์ ' or 1=1# ๋ฅผ ์ ๋ ฅํ๊ฒ ๋๋ฉด # ๋ค๋ก ์ฃผ์์ฒ๋ฆฌ ๋์ด์ ์ ์ฒด ๋ฐ์ดํฐ๊ฐ ์ถ๋ ฅ๋์ด ๋ก๊ทธ์ธ์ด ๋ ์ ์์ต๋๋ค. //SELECT * FROM USER WHERER ID='' or 1=1#' AND PW ='';๊ทธ ์ธ ์ฌ๋ฌ๊ฐ์ง sql ..

ํฌ๋ก์ค์ฌ์ดํธ ์คํฌ๋ฆฝํธ๋ SQL Injection๊ณผ ๋ค๋ฅด๊ฒ JSํ๊ทธ ๊ตฌ๋ฌธ์ ์ค๋ฅ๋ฅผ ์ด๋ฅดํค๋ ๋ฐฉ๋ฒ์ ๋งํฉ๋๋ค.์๋ฅผ ๋ค์ด ๊ฒ์ํ์ ์ ๋ ฅ์ฐฝ์ ์ ์์ ์ธ ์ ๋ชฉ์ ์ ๋ ฅํ๋๊ฒ ์๋ ์ด๋ฐ์์ผ๋ก ์ ๋ ฅํ๊ฒ ๋๋ค๋ฉด ๊ฒ์ํ์ ๋ด์ฉ์๋ ๋ด์ฉ์ด ๋ณด์ฌ์ฃผ๋๊ฒ์ด ์๋ ์คํฌ๋ฆฝํธ ์ฝ๋๊ฐ ์คํ๋์ด ํด๋น ํ์ด์ง๋ฅผ ์คํํ ๋ ๋ง๋ค Alert ๋ฉ์์ง๊ฐ ๋ํ๋ ๊ฒ์ ๋๋ค. ์ด๋ฐ์ location.href ๋ฑ์ ํ์ฉํ์ฌ ํด๋น ํ์ด์ง๋ฅผ ์ ๋ ์ด์ ์๊ฒ ํ ์๋ ์๊ฒ ๋ค์...์ด๋ฌํ ๋ฐฉ๋ฒ์ ๋ง๊ธฐ์ํด์ ์ฌ๋ฌ ๋ฐฉ๋ฒ๋ค์ด ์์ง๋ง ์ ๋ ํด๋น ํ๊ทธ์ ๋ฌธ์๋ฅผ ๋ฌธ์์ด๋ก ๋ฐ๊พธ์ด ํ๊ทธ๋ก ์ธ์ํ ์ ์๋๋ก ํ์์ต๋๋ค. var filter = title.replace(//g, ">"); //xss ํํฐ title = filter; //xss ํํฐ๋ ๋ด์ฉ ๋ฃ๊ธฐ → ๋ฌธ์..