๐ ์์ฆ ๋ ์จ๊ฐ ๋์์ก๋ค ์ถ์์ก๋ค ํ๋ ๊ฒ์ ๋ณด๋ ํ์ ๊ธฐ์ธ๋ฏํ๋ค ์ด๋ด๋ ๋ชธ๊ด๋ฆฌ์ ์ ์ํด์ผ๊ฒ ๋ค... ํ๋๋ ์์ฆ ๋ชธ์ด ๋๋ฌด ์ฝ๊ฒ ํผ๋กํด์ง๋ค.. ํ์คํ ์ฒด๋ ฅ์ด ๋จ์ด์ง๋ ๊ฒ์ ๋ชธ์ผ๋ก ์ง์ ์ฒด๊ฐํ๊ณ ์๋ค. ์ฒด๋ ฅ์๋๋ฆฌ์!! ์ด์ฌ์ ์ฐพ์ ๋ ์ด์ฌํ ๊ณต๋ถํด๋ณด์!!
๐ ์ค๋ ํ์ตํ ๋ด์ฉ
OWASP(The Open Web Application Security Project)
- ์ ์ธ๊ณ์ ๋ณด์ ์ ๋ฌธ๊ฐ๋ค์ด ์น์ ๋ณด์์ ๋ํ ํ์ค์ ์ ์ํ๊ณ ์ด์ ๋ํด ๊ธฐ์ ๊ณผ ๊ฐ๋ฐ์๋ค์๊ฒ ํจ์จ์ ์ธ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ์คํ ์์ค ์ปค๋ฎค๋ํฐ์ด๋ค.
SQL Injection
- ๊ฐ๋จํ์ง๋ง ๊ฐ๋ ฅํ ๊ณต๊ฒฉ๊ธฐ๋ฒ
- DB์์ ์์์ SQL๋ฌธ์ ์คํํ ์ ์๋๋ก ๋ช ๋ น์ด๋ฅผ ์ฝ์ ํ๋ ๊ณต๊ฒฉ์ ํ
- ๋์ ๋ฐฉ์
- ์ ๋ ฅ(์์ฒญ)๊ฐ ๊ฒ์ฆ
- Prepared Statement ๊ตฌ๋ฌธ ์ฌ์ฉ
- Error Message ๋ ธ์ถ ๊ธ์ง
- SQL(Structured Query Language)
- ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์์ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌ ๋ฐ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ค๊ณ๋ ์ ์ธํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด
XSS(Cross-site Scripting)
- ์น ์ฌ์ดํธ ๊ด๋ฆฌ์๊ฐ ์๋ ๊ตฅ๊ฒฉ์๊ฐ ์น ์ฌ์ดํธ์ ์ ์์ ์ธ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ด๋๋ ํ์
- ๊ณต๊ฒฉ์ ํ
- Stored XSS(์ง์์ฑ)
- ์คํฌ๋ฆฝํธ๊ฐ ์๋ฒ์ ์ ์ฅ๋์ด ์ฌ์ฉ์์๊ฒ ํผํด๋ฅผ ์ค ์ ์๋ ์ ํ
- Refleted XSS(๋น ์ง์์ฑ)
- URL ํ๋ผ๋ฏธํฐ๋ฅผ ์ด์ฉํด ์คํฌ๋ฆฝํธ๋ฅผ ๋ง๋๋ ์ ํ
- Stored XSS(์ง์์ฑ)
- ๋์๋ฐฉ์
- ์คํฌ๋ฆฝํธ ํ๊ทธ์ ์ ๋ ฅ์ ๋ง๋๋ค.
- ์ฟ ํค ์ค์ ํ์ธํ๋ค(httpOnly)
- ์ฟ ํค์ ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ๋ด์ง ์๋๋ค.
ํ ํฐ
- ํด๋ผ์ด์ธํธ์ ์ธ์ฆ์ ๋ณด๋ฅผ ๋ณด๊ดํ๋ค.
- ์ํํ๋ค๊ณ ์๊ฐํ ์ ์์ผ๋ ํ ํฐ์ ์ ์ ์ ๋ณด๋ฅผ ์ํธํํ๊ธฐ ๋๋ฌธ์ ํด๋ผ์ด์ธํธ์ ๋ด์ ์ ์๋ค.
ํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ(JWT, Token-based Authentication)
- ๋งค ์์ฒญ๋ง๋ค ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ดํด๋ณด๋ ๊ฒ์ด ๋ถํธํ๊ณ ์ด์ ๋ฐ๋ฅธ ๋ถ๋ด์ ๋์ด๋ด๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ค.
JWT ์ข ๋ฅ
- ์ก์ธ์คํ ํฐ
- ๋ณดํธ๋ ์ ๋ณด๋ค์ ์ ๊ทผํ ์ ์๋ ๊ถํ์ ๋ถ์ฌํ๋ค.
- ์งง์ ์ ํจ๊ธฐ๊ฐ์ ์ฃผ์ด ํ ํฐ์ ํ์ทจ๋นํ๋๋ผ๋ ์ฅ๊ธฐ๊ฐ ์ฌ์ฉํ๋ ๊ฒ์ ๋ง์ ์ ์๋ค.
- ๋ฆฌํ๋ ์ ํ ํฐ
- ์ก์ธ์ค ํ ํฐ์ ์ ํจ๊ธฐ๊ฐ์ด ๋ง๋ฃ๋๋ค๋ฉด ์๋ก์ด ์ก์ธ์ค ํ ํฐ์ ๋ถ์ฌ๋ฐ๊ฒ ํด์ค๋ค.
- ์ ์ ์ ํธ์๋ณด๋ค ์ ๋ณด๋ฅผ ์ค์์ ํ๋ ๊ณณ์์๋ ์ฌ์ฉํ์ง ์๋๋ค.
JWT ๊ตฌ์กฐ
- Header
- ์ด๋ค ์ข ๋ฅ์ ํ ํฐ์ธ์ง ์ด๋ค ์๊ณ ๋ฆฌ์ฆ์ Signature๋ฅผ ์ํธํ ํ๋์ง์ ๋ํ ๋ด์ฉ
- Payload
- ์๋ฒ์์ ํ์ฉํ ์ ์๋ ์ ์ ์ ์ ๋ณด๊ฐ ๋ด๊ธด ๋ด์ฉ
- Signature
- ์๋ฒ์ ๋น๋ฐํค์ ํค๋์์ ์ง์ ํ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ์ํธํ ํ๋ค.
OAuth
- ์ธ์ฆ์ ์ํ ํ์ค ํ๋กํ ์ฝ
- ์์ ๋ก๊ทธ์ธ ์ธ์ฆ ๋ฐฉ์์ ๋ฐํ์ด ๋๋ ๊ธฐ์
- ๋ณด์๋ ๋ฆฌ์์ค์ ์ก์ธ์คํ๊ธฐ ์ํด ํด๋ผ์ด์ธํธ์๊ฒ ๊ถํ์ ์ ๊ณตํ๋ ํ๋ก์ธ์ค๋ฅผ ๋จ์ํํ๋ ํ๋กํ ์ฝ
- ์ด๋ฏธ ์ฌ์ฉ์ฅ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๋ ์น ์๋น์ค์์ ์ฌ์ฉ์์ ์ธ์ฆ์ ๋์ ํด์ฃผ๊ณ , ์ ๊ทผ ๊ถํ์ ๋ํ ํ ํฐ์ ๋ฐ๊ธํ ํ, ์ด๋ฅผ ์ด์ฉํด ๋ด ์๋ฒ์์ ์ธ์ฆ์ ๊ฐ๋ฅํ๊ฒ ํ๋ค.
- OAuth๋ ์ธ์ฆ์ ๋ค๋ฅธ ์๋น์ค์ ๋งก๊ธฐ๋ ๊ธฐ๋ฅ์ด๊ณ , ์ ๊ทผ ๊ถํ ๊ด๋ฆฌ๋ ๋ด ์๋ฒ์ ๋ชซ์ด๋ค.
OAuth๋ฅผ ์ฌ์ฉํ๋ ์ด์
- ๋ค์ํ ์น ์๋น์ค์ ID์ Password๋ฅผ ๊ธฐ์ตํ๋ ๊ฒ์ด ๋งค์ฐ ๊ท์ฐฎ์ ์ผ์ด๊ธฐ ๋๋ฌธ์ด๋ค.
- ์์ฃผ ์ฌ์ฉํ๋ ์๋น์ค๋ค (github, google, kakao, facebook ๋ฑ)์ ID์ Password๋ง ๊ธฐ์ตํด๋๋ฉด ํด๋น ์๋น์ค์ ํตํด ์ธ๋ถ ์๋น์ค๋ก ์์ ๋ก๊ทธ์ธ์ ํ ์ ์๊ฒ๋๋ค.
- ๊ฒ์ฆ๋์ง ์์ App์์ OAuth๋ฅผ ์ฌ์ฉํ์ฌ ๋ก๊ทธ์ธํ๋ค๋ฉด ์ง์ ์ ์ ์ ๋ฏผ๊ฐํ ์ ๋ณด๊ฐ App์ ๋ ธ์ถ๋ ์ผ์ด ์๊ณ ์ธ์ฆ ๊ถํ์ ๋ํ ํ๊ฐ๋ฅผ ๋ฏธ๋ฆฌ ์ ์ ์๊ฒ ๊ตฌํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋ณด์์ ์ธ ์ธก๋ฉด์์๋ ์ข๋ค.
OAuth์์ ๋ฐ๋์ ์์์ผ ํ ์ฉ์ด
- Resource Owner
- ์ก์ธ์ค ์ค์ธ ๋ฆฌ์์ค์ ์ ์
- Client
- ๋ฆฌ์์ค ์ค๋๋ฅผ ๋์ ํ์ฌ ๋ณดํธ๋ ๋ฆฌ์์ค์ ์ก์ธ์คํ๋ ์ ํ๋ฆฌ์ผ์ด์
- Resource Server
- ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์๋ฝํ๊ณ ์๋ตํ ์ ์๋ ์๋ฒ
- Authorization Server
- Resource Server๊ฐ ์ก์ธ์ค ํ ํฐ์ ๋ฐ๊ธ๋ฐ๋ ์ธ์ฆ์๋ฒ
- ๋ฆฌ์์ค ์ค๋๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ์ธ์ฆํ ํ ํด๋ผ์ด์ธํธ์๊ฒ ์ก์ธ์ค ํ ํฐ์ ๋ฐ๊ธํ๋ ์๋ฒ
- Authorization Grant
- ํด๋ผ์ด์ธํธ๊ฐ ์ก์ธ์ค ํ ํฐ์ ์ป๋ ๋ฐฉ๋ฒ
- Authorization Code Grant Type
- Refresh Token Grant Type
- Client Credentials Grant Type
- Implicit Grant Type
- Resource Owner Credentials Grant Type
- ํด๋ผ์ด์ธํธ๊ฐ ์ก์ธ์ค ํ ํฐ์ ์ป๋ ๋ฐฉ๋ฒ
- Authorization Code
- Authorization Grant์ ํ ํ์ ์ผ๋ก ์ก์ธ์ค ํ ํฐ์ ๋ฐ๊ธ๋ฐ๊ธฐ ์ํ Code
- Client ID๋ก ์ด Code๋ฅผ ๋ฐ์์จ ํ, Client Secret๊ณผ Code๋ฅผ ์ด์ฉํด ์ก์ธ์ค ํ ํฐ์ ๋ฐ์์ฌ ์ ์๋ค.
- Access Token
- ๋ณดํธ๋ ๋ฆฌ์์ค์ ์ก์ธ์คํ๋ ๋ฐ ์ฌ์ฉ๋๋ ์ธ์ฆ ํ ํฐ
- Authorization Code์ Client Secret์ ์ด์ฉํด ๋ฐ์์จ ์ด Access Token์ผ๋ก ๋ฆฌ์์ค ์๋ฒ์ ์ ๊ทผ ํ ์ ์์
- Scope
- ํ ํฐ์ ๊ถํ์ ์ ์
- ์ฃผ์ด์ง ์ก์ธ์ค ํ ํฐ์ ์ฌ์ฉํ์ฌ ์ ๊ฒ์ค ํ ์ ์๋ ๋ฆฌ์์ค์ ๋ฒ์
๐ ์ถ๊ฐ๋ก ๊ณต๋ถํ ๋ด์ฉ
[udemy] React ์๋ฒฝ ๊ฐ์ด๋ ๊ฐ์ ๋ณด๊ธฐ (๋งค์ผ ์กฐ๊ธ์ฉ ์ด๋ผ๋ ๊พธ์คํ ๋ฃ๊ธฐ)
axios ์ฌ์ฉ๋ฐฉ๋ฒ
Python ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด
๐ ์ค์ํ ๋ด์ฉ
- ํ ํฐ
'Daily > Today I Learned' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
22.07.19_TIL (0) | 2022.07.19 |
---|---|
22.07.18_TIL (0) | 2022.07.18 |
22.07.14_TIL (0) | 2022.07.14 |
22.07.12_TIL (0) | 2022.07.12 |
22.07.11_TIL (2) | 2022.07.11 |