HTTP + Secure(๋ณด์)
( HTTP ์์ฒญ์ SSL ํน์ TLS๋ผ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํด, HTTP ํต์ ์ ํ๋ ๊ณผ์ ์์ ๋ฐ์ดํฐ๋ฅผ ์ํธํํ์ฌ ์ ์กํ๋ ๋ฐฉ๋ฒ )
๋๋ถ๋ถ์ ์น์ฌ์ดํธ์ ๊ฒฝ์ฐ HTTPS๋ฅผ ์ฌ์ฉ
HTTP over SSL(TLS), HTTP over Secure๋ผ๊ณ ๋ถ๋ฅด๊ธฐ๋ ํจ
๐ก ๊ธฐ์กด HTTP ์์ฒญ์ ๋๊ตฐ๊ฐ๊ฐ ์ค๊ฐ์ ์ค๊ฐ์ ๊ณต๊ฒฉ(Man-in-the-middle attack)์ ํตํด ์์ฒญ ๋ด์ฉ์ ๋ค์ฌ๋ค๋ณธ๋ค๋ฉด ๋ค ๋ณผ ์ ์์์
โ ๊ฐ์ธ์ ๋ณด ์ ์ถ ๊ฐ๋ฅ์ฑ ์์
[์ค๊ฐ์ ๊ณต๊ฒฉ ์ฐธ๊ณ ] https://en.wikipedia.org/wiki/Man-in-the-middle_attack
๊ธฐ๋ฐ์ฑ (privacy)
โ ๋ฉ์ธ์ง๋ฅผ ๊ฐ๋ก์ฑ ์ ์์ (์ฝ์ ์ ์์)
๋ฌด๊ฒฐ์ฑ (integrity)
โ ๋ฉ์์ง๊ฐ ์กฐ์๋์ง ์์ (์์ ํ ์ ์์)
1. ์ํธํ
์ผ๋ จ์ ์ ๋ณด๋ฅผ ์์์ ๋ฐฉ์์ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ํํ๋ก ๋ณํํ์ฌ,
ํด๋น ๋ฐฉ์์ ๋ํ ์ ๋ณด๋ฅผ ์์ ํ ์ฌ๋์ ์ ์ธํ๊ณ ์ดํดํ ์ ์๋๋ก ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํด ์ ๋ณด๋ฅผ ๊ด๋ฆฌํ๋ ๊ณผ์
HTTP ํ๋กํ ์ฝ ๋ด์ฉ์ ์ํธํํ์ฌ ์ 3์๊ฐ ์๋ฒ์ ํด๋ผ์ด์ธํธ๊ฐ ์ฃผ๊ณ ๋ฐ๋ ์ ๋ณด๋ฅผ ํ์ทจํ ์ ์๋๋ก ํ๋ ๊ฒ
์ค์ํ ๋ฐ์ดํฐ๊ฐ ์ ์ถ๋ ๊ฐ๋ฅ์ฑ์ด HTTP๋ณด๋ค ํ์ ํ ์ ์ด์ง
( ์ํธ๋ฅผ ๋ณตํธํํ๊ธฐ ์ ๊น์ง๋ ์ด๋ค ๋ด์ฉ์ธ์ง ์ ์ ์์ )
๋น๋์นญํค ๋ฐฉ์๊ณผ ๋์นญํค ๋ฐฉ์์ ํผ์ฉํ์ฌ ์ฌ์ฉ
โ ํด๋ผ์ด์ธํธ์์ ๋ง๋ค ๋์นญํค๋ฅผ ๋น๋์นญํค๋ก ์ํธํํ์ฌ ์๋ฒ์ ์ ๋ฌ
โ๏ธ ํค ์ ํ์ ๋ฐ๋ฅธ ์ํธํ ๋ฐฉ์
- ๋์นญํค ์ํธํ (ํค๊ฐ ํ๋)
โ ์์ชฝ์ด ๊ณตํต์ ๋น๋ฐ ํค๋ฅผ ๊ณต์ ํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์๋ณตํธํํ๋ ๊ฒ
( Ex. ๊ฐ์กฑ๋ผ๋ฆฌ ์ง ์ด์ ๊ณต์ ํ๋ ๊ฒ )
โ ๋น๋์นญํค ์๊ณ ๋ฆฌ์ฆ๋ณด๋ค ํจ์ฌ ๋ณต์ก์ฑ์ด ๋ฎ์์, ์ค๊ฐ์ ์ ๋ณด๊ฐ ํ์ทจ๋๋ฉด ๋ชจ๋ ๋ฐ์ดํฐ์ ๋ณตํธํ๊ฐ ๊ฐ๋ฅํ๊ฒ ๋จ
โ ๋์นญํค๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋๋ ๋น๋์นญํค ๋ฐฉ์ ์ฌ์ฉ
โ โ - ๋น๋์นญํค ์ํธํ (ํค๊ฐ ๋๊ฐ)
โ ๊ฐ๊ฐ ๊ณต๊ฐํค์ ๋น๋ฐํค๋ฅผ ๊ฐ์ง๊ณ ์๋๊ฐ ๋์ ๊ณต๊ฐํค๋ก ์ํธํํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ธ์ด ๊ฐ์ง ๋น๋ฐํค๋ก ๋ณตํธํํ๋ ๊ฒ
( ์๋ ๋ ๊ฐ์ง ๋ฐฉ์์ด ์์ง๋ง ๊ฒฐ๊ตญ์ ๊ณต๊ฐํค๋ก ์ํธํ ํด์ผ์ง๋ง ์ ๋ณด ๋ณดํธ ๊ฐ๋ฅ )
โ ๋์นญํค ์๊ณ ๋ฆฌ์ฆ๋ณด๋ค ํจ์ฌ ๋ณต์ก
โ
๐ ๊ฐ์ธํค(private key)๋ก ์ํธ / ๊ณต๊ฐํค(public key)๋ก ๋ณตํธ โ ์ ์์๋ช
( ์ ๋ณด ๋ณดํธ๊ฐ ์๋๋ผ ๋๊ฐ ๋ณด๋๋์ง๊ฐ ๊ถ๊ธํ ๊ฒ (์ ์ํ์ธ))
โ
๐ ๊ณต๊ฐํค(public key)๋ก ์ํธ / ๊ฐ์ธํค(private key)๋ก ๋ณตํธ โ ์ํธํ
( ๋ง ๊ทธ๋๋ก ์ ๋ณด๋ณดํธ )
โ๏ธ ๋ฐฉํฅ์ ๋ฐ๋ฅธ ์ํธํ ๋ฐฉ์
- ๋จ๋ฐฉํฅ ์ํธํ
โ ์ํธํ๋ ๋์ง๋ง ๋ณตํธํ๋ ๋์ง ์๋ ์ํธํ ๋ฐฉ์
[์ฐธ๊ณ ] https://en.citizendium.org/wiki/One-way_encryption
โ โ - ์๋ฐฉํฅ ์ํธํ
โ ์ํธํ ๋ณตํธํ ๋ชจ๋ ๋๋ ์ํธํ ๋ฐฉ์
2. ์ธ์ฆ์
์๋ฒ์ ์๋ต๊ณผ ํจ๊ป ํด๋ผ์ด์ธํธ์๊ฒ ์ ์ก๋จ
ํด๋น ์ธ์ฆ์์ ๋ด์ฉ์ ์๋ฒ์ ๋๋ฉ์ธ ๊ด๋ จ ์ ๋ณด๊ฐ ์์ด์ ๋ฐ์ดํฐ ์ ๊ณต์์ ์ธ์ฆ์ ์ฉ์ดํ๊ฒ ํจ
( ํด๋ผ์ด์ธํธ๋ CA์ ๊ณต๊ฐํค๋ก ๋ณตํธํํ์ฌ ์ธ์ฆ์์ ์์ฑ๋ ๋๋ฉ์ธ๊ณผ ์๋ต๋ฐ์ดํฐ์ ๋๋ฉ์ธ๊ณผ ๋น๊ตํ์ฌ ํ์ธ )
๐ก ์ฌ๊ธฐ์ ๋๋ฉ์ธ ์ ๋ณด๊ฐ ๊ฐ๋ค๋ฉด ํด๋น ์๋ฒ๊ฐ ๋ง์์ ํ์ ํ๊ณ ,
์ค๊ฐ์ ๊ณต๊ฒฉ์ผ๋ก ์ธํด ๋๋ฉ์ธ ์ ๋ณด๊ฐ ๋ค๋ฅด๋ค๋ฉด ์๋ฒ๊ฐ ์๋์ ํ์ ํจ !
์ด ์ธ์ฆ์๋ก ์๋ฒ(๋ฐ์ดํฐ ์ ๊ณต์)์ ์ ์ ๋ณด์ฅ ๊ฐ๋ฅ
์ด๋ฅผ ๋ณด์ฅํ๋ ์ 3์ = CA
โ๏ธ CA (Certificate Authority) (๊ณต์ธ ์ธ์ฆ์ ๋ฐ๊ธ ๊ธฐ๊ด)
- ์๋ฒ์ ๊ณต๊ฐํค + ์ ๋ณด๋ฅผ CA์ ๋น๋ฐํค๋ก ์ํธํํ์ฌ ์ธ์ฆ์๋ฅผ ๋ฐ๊ธํจ
( ์ด ์ธ์ฆ์๋ CA์ ๊ณต๊ฐํค๋ก ๋ณตํธํ ๊ฐ๋ฅ )
( ํด๋น ๊ธฐ๊ด์ ๋น๋ฐํค๊ฐ ์ ์ถ๋๋ฉด ํ์ฐ๋ ๊ฐ๋ฅํจ )
โ - ๊ฐ ๋ธ๋ผ์ฐ์ ๋ ๊ฐ์ ์ ๋ขฐํ๋ CA์ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์์
( ๋ธ๋ผ์ฐ์ ๋ง์ ์ธ์ฆ์๊ฐ ์ฐจ์ด๊ฐ ๋จ )
( ์๊ฒฉ์ด ๊ณ์ ์ ์ง๋๋ ๊ฒ์ด ์๋๋ผ ๋ฐํ๋นํ ์๋ ์์ )
โ - ์ ํ ๋ค๋ฅธ ํค ํ์์ผ๋ก ์ํธํ / ๋ณตํธํ ๊ฐ๋ฅ
( A ํค๋ก ์ํธํ๋ฅผ ์งํํ๋ค๋ฉด ๋ณตํํ ํ ๋๋ Aํค์ ํ ์์ธ Bํค๊ฐ ํ์ )
โ โ HTTPS ์ด์ฉํ๋ ์๋ฒ๋ ํค ํ๋๋ฅผ ๋น๋ฐ๋ก ์จ๊ฒจ๋๊ณ , ๋๋จธ์ง ํ๋๋ ํด๋ผ์ด์ธํธ์๊ฒ ๊ณต๊ฐํด์ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ฒ ์ ์กํ ์ ์๊ฒ ํจ
( But, ๊ณต๊ฐํค ์ฐ์ฐ์ ๋งค์ฐ ๋ณต์กํ ์๊ณ ๋ฆฌ์ฆ์ด๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ์์ฒญ์ ๊ณต๊ฐํค ์ฌ์ฉํ๋ ๊ฒ์ ์๋ - ํต์ ์ฒ์ ๋์นญํค ์ ์ก์๋ง ์ฌ์ฉ )
โ๏ธ TLS or SSL
- ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ์ CA๋ฅผ ํตํด ์๋ฒ๋ฅผ ์ธ์ฆํ๋ ๊ณผ์ ๊ณผ ๋ฐ์ดํฐ๋ฅผ ์ํธํํ๋ ๊ณผ์ ์ ์์ฐ๋ฅธ ํ๋กํ ์ฝ
( SSL๊ณผ TLS๋ ์ฌ์ค์ ๋์ผํ ๊ท์ฝ / SSL์ด ํ์คํ๋๋ฉฐ ๋ฐ๋ ์ด๋ฆ์ด TLS )
1. ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์๊ฒ ํฌ๋ก ์์ฒญ
๐ฌ ํด๋ผ์ด์ธํธ :
์๋ฒ์ผ ์๋ .
๋ ์์ฒญ ๋ณด๋ผ๊ฑฐ์ผ.
2. ์๋ฒ๋ ํด๋ผ์ด์ธํธ์๊ฒ ์ธ์ฆ์๋ฅผ ํฌํจํด์ ํฌ๋ก ์๋ต
๐ฌ ์๋ฒ :
ํด๋ผ์ด์ธํธ์ผ ์๋ .
์ฌ๊ธฐ ์ธ์ฆ์ + ๊ณต๊ฐํค ์ค๊ฒ.
3. ํด๋ผ์ด์ธํธ๊ฐ ๋ด์ฅ๋ CA ๋ฆฌ์คํธ๋ฅผ ๋ณด๊ณ ์ธ์ฆ์ ํ์ธ ํ,
CA์ ๊ณต๊ฐํค๋ก ๋ณตํธํ๋ฅผ ํตํด ์ธ์ฆ์๋ฅผ ๊ฒ์ฆ
๐ฌ ํด๋ผ์ด์ธํธ :
๋ฐ์ ๊ณต๊ฐํค๋ก ์ธ์ฆ์ ์ด์ด๋ณผ๊ฒ.
๋ ๋ด๊ฐ ์๋ ์๋ฒ๊ฐ ๋ง๊ตฌ๋.
4. ํด๋ผ์ด์ธํธ๊ฐ ๋์นญํค ๋ง๋ค์ด์ ์๋ฒ์ ๊ณต๊ฐํค๋ก ์ํธํํด์ ์๋ฒ์ ์ ๋ฌ
๐ฌ ํด๋ผ์ด์ธํธ :
๊ทธ๋ผ ๋ด๊ฐ ๋์นญํค ๋ง๋ค์ด์ ๋ค๊ฐ ์ค ๊ณต๊ฐํค๋ก ์ํธํํด์ ๋ํํ ์ค๊ฒ.
5. ์๋ฒ๋ ์๋ฒ์ ๊ฐ์ธํค๋ก ๋ณตํธํํ์ฌ ํด๋ผ์ด์ธํธ์ ๋์นญํค๋ฅผ ํ์ธ
๐ฌ ์๋ฒ :
๋๊ฐ ์ค ๋์นญํค ๋ด๊ฐ ๊ฐ์ง ๊ฐ์ธํค๋ก ๋ณตํธํํด์ ์ ๋ฐ์์ด.
6. ์๋ฒ๊ฐ ๋ฐ์ ๋์นญํค๋ก ์ํ ๋ฐ์ดํฐ ์ํธํํ ํ, ํด๋ผ์ด์ธํธ์๊ฒ ๋ณด๋ด์ ํ์ธ
๐ฌ ์๋ฒ :
๊ทธ๋ผ ๋ด๊ฐ ์ด ๋์นญํค๋ก ๋ฐ์ดํฐ ํ๋ฒ ์ํธํํด์ ๋ณด๋ด๋ณผ๊ฒ.
7. ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์๊ฒ ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋์นญํค๋ก ๋ณตํธํํด์ ์๋ก ๋์นญํค๋ฅผ ์ ๊ฐ์ง๊ณ ์๋์ง ํ์ธ
( HTTPS ์ฐ๊ฒฐ ์ฑ๊ณตํ ์ํ )
๐ฌ ํด๋ผ์ด์ธํธ :
๋๊ฐ ์ค ๋ฐ์ดํฐ ๋์นญํค๋ก ์ด์ด๋ดค๋๋ ์ ์์ด.
๋ ๋ด๊ฐ ์ค ๋์นญํค ์ ๊ฐ์ง๊ณ ์๊ตฌ๋.
8. ์ด ํ์๋ ํด๋ผ์ด์ธํธ์ ์๋ฒ๋ ์๋ก ๋์นญํค๋ก ์๋ณตํธํ๋ฅผ ์งํํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ์ก
๐ฌ ํด๋ผ์ด์ธํธ / ์๋ฒ :
์ด์ ์ฐ๋ฆฌ ๋ ๋ค ๋์นญํค ์ ๊ฐ์ง๊ณ ์์ผ๋๊น ์ด๊ฑธ๋ก ๋ฐ์ดํฐ ์ฃผ๊ณ ๋ฐ์.
์ด๋ ํ ๋ฌธ์์ด์ ์์์ ์ฐ์ฐ์ ์ ์ฉํ์ฌ ๋ค๋ฅธ ๋ฌธ์์ด๋ก ๋ณํํ๋ ๊ฒ
input โ output ์ด ํญ์ ๋์ผํจ
( ์๋ณธ ์ํธ๊ฐ ๊ฐ๋ค๋ฉด ํด์๊ฐ๋ ํญ์ ๋์ผ )
ํด์ฑ๋ ๊ฐ์ ์ฌ์ค์ ๋ณตํธํ๊ฐ ๋ถ๊ฐ๋ฅ
( But, ์ํธํํ๋ ์๊ณ ๋ฆฌ์ฆ์ ์๊ฒ๋๋ฉด ํด๋
๊ฐ๋ฅ - ๋ ์ธ๋ณด์ฐ ํ
์ด๋ธ )
๋ํ์ ์ธ ํด์ ์๊ณ ๋ฆฌ์ฆ
โ SHA1(์์ฆ ์ฌ์ฉ X) / ์์ฆ์ SHA256 ๋ง์ด ์ฌ์ฉ
SHA-256 ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ ๊ฒฝ์ฐ ์ถ๋ ฅ๊ฐ์ ๊ธธ์ด๋ ์ ๋ ฅ๊ฐ์ ๊ธธ์ด์ ๊ด๊ณ์์ด ์ธ์ ๋ 256๋นํธ(64 ๊ธ์)
๊ทนํ ๋๋ฌผ๊ฒ ๋ค๋ฅธ ์ ๋ ฅ๊ฐ์ธ๋ฐ ํด์๋ ๊ฐ์ด ๊ฐ์ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ ์ ์์
1. ๋ชจ๋ ๊ฐ์ ๋ํด ํด์ ๊ฐ์ ๊ณ์ฐํ๋๋ฐ ์ค๋ ๊ฑธ๋ฆฌ์ง ์์์ผ ํจ
( ์ ์ ๊ฐ ๊ธฐ๋ค๋ฆฌ์ง ์์์ผํ๊ธฐ ๋๋ฌธ์ )
2. ์ต๋ํ ํด์ ๊ฐ์ ํผํด์ผํ๋ฉฐ, ๋ชจ๋ ๊ฐ์ ๊ณ ์ ํ ํด์๊ฐ์ ๊ฐ์ง
3. ์์ฃผ ์์ ๋จ์์ ๋ณ๊ฒฝ์ด๋ผ๋ ์์ ํ ๋ค๋ฅธ ํด์ ๊ฐ์ ๊ฐ์ ธ์ผ ํจ
Ex. ์ด๋ฉ์ผ ๊ด๋ จ ์ ๋ณด ์ป์ ๊ฒฝ์ฐ,
1. ํด๋ผ์ด์ธํธ๋ ์ด๋ฉ์ผ๊ณผ ํจ๊ป password๋ฅผ ์๋ฒ์ ์ ๋ฌ.
2. ์๋ฒ๋ ์ด ์ ๋ณด๋ค์ ๋ฐ๊ณ DB์์ ๋น๊ตํ ํ, ์๋ณธ password ๊ทธ๋๋ก DB์ ์ ์ฅ.
3. ์ดํ ์์ฒญ์์ DB์ ๋ณด๊ด๋ ์ ๋ณด์ ์ผ์นํ๋ฉด, ํด๋น ์์ฒญ ๋ฐ์ดํฐ๋ฅผ DB์์ ์ฐพ์์ ์๋ต์ผ๋ก ์ ๋ฌ
โ
โ DB์๋ password๊ฐ ๊ทธ๋๋ก ์ ์ฅ๋์ด์๊ธฐ ๋๋ฌธ์ ํ์ทจ ๋นํ๋ฉด ๊ฐ์ธ์ ๋ณด๊ฐ ์ ์ถ๋จ
โ password๋ฅผ ํด์ฑํ์ฌ DB์ ๋ณด๊ดํด์ผํจ
โ๏ธ shiftBy(๋ฌธ์์ด, ์ซ์)
โ ์ ๋ ฅ๋ฐ์ ๋ฌธ์์ด์ ์ ๋ ฅ๋ฐ์ ์ซ์์ ๊ฐ๋งํผ ์ํ๋ฒณ ์์๋ฅผ ๊ฑด๋๋ด ๋ฌธ์์ด๋ก ๋ฐํํ์ฌ ์๋ก์ด ๋ฌธ์์ด์ ๋ฐํํ๋ ๋ฉ์๋
โ
Ex. ์ธ์ฆ ๊ณผ์ ์์ shiftBy ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ์๋ฒ์ ์ ์ฉ์ ํ๋ค๊ณ ๊ฐ์ ํ๋ฉด,
์์ฒญ๊ณผ ํจ๊ป ์ ๋ฌ๋ฐ์ password๋ฅผ ์๋ฒ์ธก์์ ํด์ ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํด ํด์๊ฐ์ผ๋ก ๋ณํํ์ฌ ์ํธํ์ํจ ํ DB์ password ์ ์ฅํจ
โ
์ดํ ๋ก๊ทธ์ธ์ด๋ ์ธ์ฆ์ด ํ์ํ ์์ฒญ์ด ๋ค์ด์ค๋ฉด,
์ ๋ ฅ๋ฐ์ ๋น๋ฐ๋ฒํธ๋ฅผ ํด์๊ฐ์ผ๋ก ๋ฐ๊พธ๊ณ DB์ ์ ์ฅ๋์ด ์๋ ํด์๊ฐ ๋น๋ฐ๋ฒํธ์ ๋น๊ต
โ
โ ์ํธํํ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ๋ฐฉ์์ด๋ผ DB์ ๋น๋ฐ์ ๋ณด๊ฐ ํ์ทจ ๋นํด๋ ํด์ปค๋ ์ด ์๊ณ ๋ฆฌ์ฆ์ ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์ ๊ฐ์ธ์ ๋ณด ์ ์ถ ๊ฐ๋ฅ์ฑ ํ์ ํ ์ ์ด์ง
์ํธํ ํด์ผํ๋ ๊ฐ์ ์ด๋ค ๋ณ๋์ ๊ฐ์ ์ถ๊ฐํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ๋ณํ ์ํค๋ ๊ฒ
Ex. (password + salt ๊ฐ) ์์ฒด๋ฅผ ํด์ฑ ์๊ณ ๋ฆฌ์ฆ์ ํตํด ์ํธํํ์ฌ ์ด์ ํด์๊ฐ์ DB์ ์ ์ฅ
๋ ์ธ๋ณด์ฐ ํ
์ด๋ธ(Rainbow Table)์ ์ด์ฉํ ๋ฌด์ฐจ๋ณ ๋์
(brute-force)๊ณต๊ฒฉ ์ฑ๊ณต ํ๋ฅ ์ ๋ํญ ๋ฎ์ถ ์ ์์
โ ํด์ ์๊ณ ๋ฆฌ์ฆ์ด ๋
ธ์ถ๋๋๋ผ๋ ์๋ณธ๊ฐ์ ๋ณดํธํ ์ ์๋๋ก ํ๋ ์์ ์ฅ์น ์ญํ
[๋ ์ธ๋ณด์ฐ ํ
์ด๋ธ ์ฐธ๊ณ ]
https://namu.wiki/w/%EB%A0%88%EC%9D%B8%EB%B3%B4%EC%9A%B0%20%ED%85%8C%EC%9D%B4%EB%B8%94
์ฌ์ฌ์ฉ X
โ ํด๋ผ์ด์ธํธ์ ๊ณ์ ์์ฑ ์ / ๋น๋ฐ๋ฒํธ ๋ณ๊ฒฝ ์ ๋ง๋ค ์๋ก์ด ์์์ Salt ์ฌ์ฉํ์ฌ ํด์ฑ
โ ์ ์ ์ ํจ์ค์๋ ๋ณ๋ก ์ ์ผํ ๊ฐ์ ๊ฐ์ง
Salt๋ ์ ์ ํ ์ด๋ธ์ ๊ฐ์ด ์ ์ฅ๋์ด์ผ ํจ
๐ก ํด์๊ฐ๋ง์ผ๋ก ์ํธํํ์ฌ ์ ์ฅํ๋ค๊ณ ํ ๊ฒฝ์ฐ,
์ด ํด์ ์๊ณ ๋ฆฌ์ฆ๋ง ์๋ค๋ฉด ํด๋น ๊ฐ์ output์ด ํญ์ ๊ฐ๊ธฐ ๋๋ฌธ์ ์ฝ๊ฒ ์ ์ถ๋ ๊ฐ๋ฅ์ฑ์ด ์์
โ
โ ์๋ณธ ๋ฌธ์์ด์ Salt๊ฐ์ ์ถ๊ฐํ ํ, Hashingํ๋ค๋ฉด ์์์ด ํ๋ ํด์๊ฐ ๋ง๋ค์ด์ง
( salt๋ฅผ ๋ฟ๋ฆฐ๋ค๊ณ ์๊ฐํด )
์๋ฒ์์ ํด๋ผ์ด์ธํธ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ฐฉ๋ฒ์ ํ๋
( HTTP ์์ฒญ์ ๋ฌด์ํ์ฑ์ด์ง๋ง ์ฟ ํค๊ฐ ์๊ธฐ์ ๋ฐ์ดํฐ๊ฐ ์ ์ง๋ ์ ์์ )
์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์๊ฒ ์ผ๋ฐฉ์ ์ผ๋ก ์ ์กํ๋ ์์ ๋ฐ์ดํฐ ์กฐ๊ฐ
ํด๋ผ์ด์ธํธ๋ ํด๋น ๋๋ฉ์ธ์ ๋ํ (์๋ฒ์๊ฒ ๋ฐ์)์ฟ ํค๋ค์ ์ ์ฅํด๋จ๋ค๊ฐ,
๋์ผํ ์๋ฒ์ ์ฌ์์ฒญ์ ์ฟ ํค(์ ์ฅ๋ ๋ฐ์ดํฐ)๋ฅผ ํจ๊ป ์ ์ก
โ ์๋ตํ ๋ Set-Cookie๋ก ํด๋ผ์ด์ธํธ์๊ฒ ์ฟ ํค๊ฐ ์ ์ฅ๋๊ณ
๋งค ์์ฒญ์๋ง๋ค ํด๋น ์ฟ ํค๋ฅผ ์๋ฒ์ ๊ฐ์ด ์ ๋ฌ
[์ฐธ๊ณ ] https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie
์ญ์ ํ์ง ์๋๋ค๋ฉด ์ฌ๋ผ์ง์ง ์์
โ ์ฅ๊ธฐ๊ฐ ์ ์ฅํด์ผํ๋ ์ต์
์ ํด๋ผ์ด์ธํธ์ ์ ์ฅํ๊ธฐ์ ์ ํฉ
์๋ฐ์คํฌ๋ฆฝํธ๋ก ์ฟ ํค์ ์ ๊ทผ์ด ๊ฐ๋ฅ
์ธ์ฆ์ ํ๊ณ๊ฐ ์์ โ ์ธ์ ์ผ๋ก ํ๊ณ ๊ทน๋ณต
( ์ฟ ํค์ ์ต์ ์ ์๋ ์ต์ ์ ๋ณด๊ฐ ์กด์ฌํ๋ค๋ฉด ~~๊ฒฝ์ฐ์ ํด๋ผ์ด์ธํธ๊ฐ ์ฟ ํค ์ ์ก )
1. Domain
์๋ฒ์ ๋๋ฉ์ธ๊ณผ ์ฟ ํค์ ๋๋ฉ์ธ์ด ์ผ์นํ๋ ๊ฒฝ์ฐ์๋ง ์ฟ ํค ์ ์ก
Ex. http://www.localhost.com:3000/users/login
์์ localhost.com
๊ฐ ๋๋ฉ์ธ
2. Path
์๋ฒ์ ์ฟ ํค์ ์ธ๋ถ ๊ฒฝ๋ก๊ฐ ์ผ์นํ๋ ๊ฒฝ์ฐ์๋ง ์ฟ ํค ์ ์ก
( ์ค์ ๋ path๋ฅผ ์ ๋ถ ๋ง์กฑํ๋ ๊ฒฝ์ฐ, ์์ฒญํ๋ path๊ฐ ์ถ๊ฐ๋ก ๋ ์กด์ฌํด๋ ์ฟ ํค ์ ์ก ๊ฐ๋ฅ )
Ex. http://www.localhost.com:3000/users/login
์์ path๊ฐ /users
๋ก ์ค์ ๋์ด ์๊ณ , ์์ฒญํ๋ ์ธ๋ถ ๊ฒฝ๋ก๋ /users/login
์ด๋ผ๋ฉด ์ ์ก ๊ฐ๋ฅ
3. MaxAge 0r Expires
์ฟ ํค์ ์ ํจ๊ธฐ๊ฐ ์ค์
( ์ด ์ต์
์ ์ฌ๋ถ์ ๋ฐ๋ผ ์ธ์
์ฟ ํค / ์์์ฑ ์ฟ ํค๋ก ๋๋จ )
Ex. pc๋ฐฉ ๊ฐ์ ๋ก๊ทธ์์ ์ํ๊ณ ๊ฐ๋ฉด ๋๊ตฐ๊ฐ๊ฐ ๋ด ์ ๋ณด ํ์ทจํ ๊ฐ๋ฅ์ฑ ์์
-> ์ด ์ต์
์ผ๋ก ์ฟ ํค์ ์ ํจ ๊ธฐ๊ฐ์ ์ค์ ํ๋ฉด ์๋์ผ๋ก ์์ด์ง๊ฒ ๊ฐ๋ฅ
- ์ธ์ ์ฟ ํค (Session Cookie)
โ MaxAge / Expires ์ต์ ์ด ์๋ ์ฟ ํค
โ ๋ธ๋ผ์ฐ์ ๊ฐ ์คํ์ค์ผ ๋ ์ฌ์ฉํ ์ ์๋ ์์ ์ฟ ํค
( ๋ธ๋ผ์ฐ์ ์ข ๋ฃ์ ์ฟ ํค๋ ์ญ์ )
โ - ์์์ฑ ์ฟ ํค (Persistent Cookie)
โ MaxAge / Expires ์ ์ง์ ๋ ์ ํจ์๊ฐ๋งํผ ์ฌ์ฉ์ด ๊ฐ๋ฅํ ์ฟ ํค
( ๋ธ๋ผ์ฐ์ ์ข ๋ฃ ์ฌ๋ถ์ ์๊ด X )
4. Secure
5. HttpOnly
์๋ฐ์คํฌ๋ฆฝํธ์์ ๋ธ๋ผ์ฐ์ ์ ์ฟ ํค์ ๋ํ ์ ๊ทผ ๊ฐ๋ฅ ์ฌ๋ถ ๊ฒฐ์
โ ์ด ์ต์
์ด true๋ก ์ค์ ๋ ๊ฒฝ์ฐ, ์๋ฐ์คํฌ๋ฆฝํธ์์ ์ฟ ํค์ ์ ๊ทผ ๋ถ๊ฐ
( ๊ธฐ๋ณธ์ false )
Ex. ์ฟ ํค๋ <script>
ํ๊ทธ๋ก ์ ๊ทผ ๊ฐ๋ฅ ( XSS ๊ณต๊ฒฉ์ ์ทจ์ฝ )
โ ์ด ์ต์
์ ์ฃผ๋ฉด ์ ํ๊ทธ๋ก ์ ๊ทผ์ด ๋ถ๊ฐ๋ฅํ๋๋ก ๋ณด์ ๊ฐํ ๊ฐ๋ฅ
[XSS ์ฐธ๊ณ ] https://ko.wikipedia.org/wiki/%EC%82%AC%EC%9D%B4%ED%8A%B8_%EA%B0%84_%EC%9A%94%EC%B2%AD_%EC%9C%84%EC%A1%B0
6. SameSite
CORS ์์ฒญ์ ๋ํด ๋ฉ์๋์ ๋ฐ๋ผ ์ฟ ํค ์ ์ก ์ฌ๋ถ ๊ฒฐ์
CSRF ๊ณต๊ฒฉ์ ๋ง๋๋ฐ ๋งค์ฐ ํจ๊ณผ์ ์ธ ์ต์
์์ฒญ์ ๋ณด๋ธ Origin๊ณผ ์๋ฒ์ ๋๋ฉ์ธ, ํ๋กํ ์ฝ, ํฌํธ๊ฐ ๊ฐ์ ๊ฒฝ์ฐ๋ฅผ ๋งํจ
( ์ด ์ค ํ๋๋ผ๋ ๋ค๋ฅด๋ฉด Cross-Origin )
- Lax
โ Cross-Origin ์์ฒญ์ด๋ฉด get ์์ฒญ์์๋ง ์ฟ ํค ์ ์ก ๊ฐ๋ฅํด
(ํฌ๋กฌ ๊ธฐ๋ณธ๊ฐ)
โ - Strict
โ Cross-Origin์ด ์๋ same-site ์ธ ๊ฒฝ์ฐ์๋ง ์ฟ ํค ์ ์ก ๊ฐ๋ฅํด
โ - None
โ HTTPS๋ฉด ๋ค ์๊ด ์ํ๊ณ ์ฟ ํค ์ ์ก ๊ฐ๋ฅํ๊ฒ ํด์ค๊ฒ
( ๋ชจ๋ ์์ฒญ์ ์ฟ ํค ์ ์กํ ๊ฒ )
โ ์ด ์ต์ ์ ์ํํ๊ธฐ ๋๋ฌธ์ Secure ์ฟ ํค ์ต์ ์ด ํ์๋ก ํจ๊ป ์ฌ์ฉ๋จ
โ
[์ฐธ๊ณ ] https://jjam89.tistory.com/231
๐ก SameSite vs SameOrigin
- site
โ ๋๊ฐ์ ๋๋ฉ์ธ
Ex.http://www.google.com
=http://api.google.com
(๋๋ฉ์ธ์ ๊ฐ๊ณ ์๋ธ๋๋ฉ์ธ์ ๋ค๋ฆ)
โ - origin
โ ๋๊ฐ์ url
Ex.https:://www.google.com
=https:://www.google.com:443
( wellknown ํฌํธ )
โ
[์ฐธ๊ณ ]
https://en.wikipedia.org/wiki/Same-origin_policy
https://web.dev/same-site-same-origin/#same-site-cross-site
์ฌ์ฉ์๊ฐ ์ธ์ฆ์ ์ฑ๊ณตํ ์ํ
Ex. ์ํ ์ดํ์์ ์ฌ์ฉ ์ํ๋ฉด '60์ด ํ์ ์ธ์
์ด ๋ซํ๋๋ค.' ์ด๋ฐ ๊ฑฐ ๋์ค๋ ๊ฑฐ
์๋ฒ์ ์ ์ฅ์์ ์ธ์
์ ์ฅ
Ex. in-memory / ์ธ์
์คํ ์ด ๋ฑ
์ธ์ ์ด ๋ง๋ค์ด์ง๋ฉด, ๊ฐ ์ธ์ ์ ๊ตฌ๋ถํ ์ ์๋ ์ธ์ ID๋ ๋ง๋ค์ด์ง
โ๏ธ ์ธ์ ID
- ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ๋ถ์ฌํ๋ ์ ์ผํ๊ณ ์ํธํ๋ ID
- ํด๋ผ์ด์ธํธ์์ ์ธ์ ์ฑ๊ณต(์ธ์ฆ ์ฑ๊ณต)์ ์ฆ๋ช ํ ์๋จ์ผ๋ก ์ฌ์ฉ๋จ
โ
Ex. ๋ก๊ทธ์ธ์ ์ ์งํ๊ธฐ ์ํ ์๋จ์ผ๋ก ์ฌ์ฉ
๋ก๊ทธ์์์ด๋ผ๊ณ ํ๋ฉด,
์๋ฒ๋ ์ด ์ธ์ ์ ๋ณด๋ฅผ ์ญ์ ํด์ผํ๊ณ / ํด๋ผ์ด์ธํธ๋ (์ธ์ ์ ๋ณด๊ฐ ์ญ์ ๋)์ฟ ํค๋ฅผ ๊ฐฑ์ ํด์ผ ํจ
์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ์ฟ ํค ์์๋ก ์ญ์ ๋ถ๊ฐ๋ฅ
But, Set-Cookie
๋ก ํด๋ผ์ด์ธํธ์๊ฒ ์ฟ ํค ์ ์กํ ๋ ์ธ์
์์ด๋์ ํค ๊ฐ์ ๋ฌดํจํ ๊ฐ์ผ๋ก ๊ฐฑ์ ๊ฐ๋ฅ
๋ณดํต ํ๋์ ์๋ฒ์์๋ง ์ ์ ์ํ๋ฅผ ์ ์ฅ
๐ก jwt ๋ณด๋ค session์ด ์์ ํ ๊น?
โ ์ํฉ์ ๋ฐ๋ผ ๋ค๋ฆ !!
โ session ๋ฒ ์ด์ค๋ response content type์ด html์ผ ๋ ์์ฐ์ค๋ฝ๊ณ ,
response type์ด application/json์ผ๋๋ JWT์ ๋ ์ ํธํ๋ค
๋ผ๊ณ ์ดํดํ๋ฉด ํธํ ๋ฏํจ
[์ฐธ๊ณ ] https://github.com/boojongmin/memo/issues/7
ํด๋ผ์ด์ธํธ(๊น์ฝ๋ฉ) โ ์๋ฒ
๐ ์ ์ ์์ด๋ / ํจ์ค์๋ ์ฐ๊ณ ์ด ์ฒญ๋ฐ์ง ์ฅ๋ฐ๊ตฌ๋์ ๋ฃ์ด์ค
์๋ฒ โ DB
๐ ํด์ฑํ์ฌ DB์ ์ ๋ณด ์ ์ฅ
DB โ ์๋ฒ
๐ session_id ๋ฐํ
์๋ฒ โ ํด๋ผ์ด์ธํธ
๐ Set-Cookie๋ก ์ํธํ๋ session_id ์ฟ ํค์ ๋ฃ์ด์ ๋ณด๋
์ดํ ์์ฒญ ํ๋ฒ ๋ ๋ณด๋
ํด๋ผ์ด์ธํธ โ ์๋ฒ
๐ ์
์ธ ๋ ์ฅ๋ฐ๊ตฌ๋์ ๋ฃ์ด์ค
( ์ ์ฅ๋ session_id๋ก ํ์ํ ์์
์ํ )
์๋ฒ โ DB
๐ session_id ํ์ธํ๊ณ ์ฅ๋ฐ๊ตฌ๋ ์
๋ฐ์ดํธ
DB
๐ session_id๊ฐ ์ ํจํ๊ธฐ์ ์ฅ๋ฐ๊ตฌ๋ ์
๋ฐ์ดํธ ์๋ฃ
์๋ฒ โ ํด๋ผ์ด์ธํธ
๐ ์ฅ๋ฐ๊ตฌ๋ ์ ์ฅ ์๋ฃํจ
โ ์ธ์ฆ์ ๋ฐ๋ผ ๋ฆฌ์์ค์ ์ ๊ทผ ๊ถํ์ด ๋ฌ๋ผ์ง
๐ก ์ฟ ํค vs ์ธ์
- ์ ์ ์ํ ์ ์ฅ ๊ฒฝ๋ก
- ์ฟ ํค โ ํด๋ผ์ด์ธํธ
- ์ธ์ โ ์๋ฒ
โ - ์ฅ์
- ์ฟ ํค โ ์๋ฒ์ ๋ถ๋ด์ ๋์ด์ค
- ์ธ์ โ ์ ๋ขฐํ ์ ์๋ ์ ์ ์ธ์ง ์๋ฒ์์ ์ถ๊ฐ๋ก ํ์ธ ๊ฐ๋ฅ
โ - ๋จ์
- ์ฟ ํค โ ์ฟ ํค ๊ทธ ์์ฒด๋ ์ธ์ฆ์ด ์๋
- ์ธ์ โ ํ๋์ ์๋ฒ์์๋ง ์ ์ ์ํ๋ฅผ ๊ฐ์ง๋ฏ๋ก ๋ถ์ฐ์ ๋ถ๋ฆฌ
โ
โ But, ์ฟ ํค์ ์ธ์ ์ ๋น๊ตํ ๋งํ ๋์์ด ์๋ !
์์ง ํ์ต ์ด๋ฐ์ด๋ผ ์ฌ์ด ์ดํด๋ฅผ ์ํ์ฌ ๊ฐ๊ฐ์ ํน์ง๋ค์ ์์๋ณธ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๊ธฐ
โ
[์ฐธ๊ณ ] https://codinglevelup.tistory.com/86
๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์์์ SQL๋ฌธ์ ์คํํ ์ ์๋๋ก ๋ช ๋ น์ด๋ฅผ ์ฝ์ ํ๋ ๊ณต๊ฒฉ
์์ฉ ํ๋ก๊ทธ๋จ์ ๋ณด์์์ ํ์ ์ ์ด์ฉํด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋น์ ์์ ์ผ๋ก ์กฐ์
๊ณต๊ฒฉ์๊ฐ ์ ์์ ์ธ SQL๋ฌธ์ ๋ฃ์ด ์๋ฒ์ ์ ์ก
์๋ฒ๊ฐ ํด๋น SQL๋ฌธ์ ๊ธฐ์กด SQL๋ฌธ์ ์ฝ์
ํด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฟผ๋ฆฌ ๋ณด๋
Ex. OR โ1โ = โ1'
๊ณผ ๊ฐ์ ๋น์ฐํ ์กฐ๊ฑด์ SQL ๋ฌธ์ ์ฝ์
ํด ๋ฌด์กฐ๊ฑด ์๋ต์ด ์ค๋๋ก
Ex. DROP TABLES users;--;
์์ฑํ๋ฉด ๋ชจ๋ ์ญ์ ๋๋๋ก
id ๊ฒ์ฆ ์ฌ๋ถ์ ์๊ด ์์ด ๋ชจ๋ ์ฌ์ฉ์์ ์ ๋ณด๋ฅผ ๋ฐํ
๋ชจ๋ ์ฌ์ฉ์์ ์ ๋ณด๊ฐ ๊ณต๊ฒฉ์์๊ฒ ์ ์ก๋จ
์
๋ ฅ(์์ฒญ)๊ฐ ๊ฒ์ฆ
โ ํ์ดํธ๋ฆฌ์คํธ ๋ฐฉ์์ผ๋ก ํด๋น ํค์๋๊ฐ ๋ค์ด์ค๋ฉด ๋ค๋ฅธ ๊ฐ์ผ๋ก ์นํํ์ฌ SQL Injection์ ๋์
โ๏ธ ํ์ดํธ๋ฆฌ์คํธ
โ ๊ธฐ๋ณธ ์ ์ฑ ์ด ๋ชจ๋ ์ฐจ๋จ์ธ ์ํฉ์์ ์์ธ์ ์ผ๋ก ์ ๊ทผ์ด ๊ฐ๋ฅํ ๋์์ ์ง์ ํ๋ ๋ฐฉ์ or ๊ทธ ์ง์ ๋ ๋์๋ค
Prepared Statement ๊ตฌ๋ฌธ ์ฌ์ฉ
โ ์ฌ์ฉ์์ ์
๋ ฅ์ด SQL๋ฌธ์ผ๋ก๋ถํฐ ๋ถ๋ฆฌ๋์ด SQL Injection ๋ฐฉ์ด
๐ก ์ฌ์ฉ์์ ์ ๋ ฅ๊ฐ์ด ์ ๋ฌ๋๊ธฐ ์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ๋ฏธ๋ฆฌ ์ปดํ์ผํ์ฌ,
SQL๋ฌธ์ ๋ฐ๋ก ์คํํ์ง ์๊ณ ๋๊ธฐํ๋ฉฐ ์ฌ์ฉ์์ ์ ๋ ฅ๊ฐ์ ๋จ์ ํ ์คํธ๋ก ์ธ์ํจ
โ ์ ๋ ฅ๊ฐ์ด SQL๋ฌธ์ด ์๋ ๋จ์ ํ ์คํธ๋ก ์ ์ฉ๋์ด ๊ณต๊ฒฉ ์คํจ
Error Message ๋
ธ์ถ ๊ธ์ง
โ ๊ณต๊ฒฉ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ Error Message๋ฅผ ํตํด ํ
์ด๋ธ์ด๋ ์ปฌ๋ผ ๋ฑ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๋ณด๋ฅผ ์ป์ ์ ์๋๋ฐ,
์ด SQL๋ฌธ๊ณผ Error ๋ด์ฉ์ด ํด๋ผ์ด์ธํธ์๊ฒ ๋
ธ์ถ๋์ง ์๋๋ก ๋ณ๋์ ์๋ฌํธ๋ค๋ง ํ์
๋ค๋ฅธ Site์์ ์ ์ ๊ฐ ๋ณด๋ด๋ ์์ฒญ์ ์กฐ์(forgery)ํ๋ ๊ฒ
( ์ฃผ์๊ฐ ๋ค๋ฅธ ์ฌ์ดํธ์์ ์์ฒญ์ ์กฐ์ํ๋ ๊ฒ ( ์๋ต์๋ ์ ๊ทผ X ))
โ
Ex. ๊น์ฝ๋ฉ์ด ์ํ ๋ก๊ทธ์ธํ๋๋ฐ ํด์ปค๊ฐ ์คํธ๋ฉ์ผ๋ก ๋งํฌ ํด๋ฆญํ๊ฒ ํจ
ํด์ปค๋ ๊ทธ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๊ธฐ ๊ณ์ข๋ก ๋ ์ด์ฒด ๊ฐ๋ฅ
ํด์ปค๊ฐ ์ง์ ๋ฐ์ดํฐ๋ฅผ ์ ๊ทผํ ์ ์์
๋ค๋ฅธ Origin์ด๋ผ์ ์๋ต(Response)์ ๋ณด๋ฅผ ์ง์ ๋ฐ์ ์ ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ์๋ ์ ๊ทผ ๋ถ๊ฐ
์ฟ ํค๋ฅผ ์ฌ์ฉํ ๋ก๊ทธ์ธ
โ ์ ์ ๊ฐ ๋ก๊ทธ์ธ ํ์ ๋, ์ฟ ํค์ ์ ์ ์ ๋ณด๊ฐ ๋ด๊ฒจ์์ด์ผํจ
์์ธกํ ์ ์๋ ์์ฒญ / parameter๋ฅผ ๊ฐ์ง๊ณ ์์ด์ผํจ
โ ์์ฒญ์ ํด์ปค๊ฐ ๋ชจ๋ฅด๋ ์ ๋ณด๊ฐ ๋ด๊ฒจ์์ผ๋ฉด ์๋จ
Ex. ์ํ์์ ๋์ ๋ฝ์ผ๋ ค๊ณ ํ ๋ password๋ฅผ ๋ชจ๋ฅด๊ณ ์ด ๊ณต๊ฒฉ์ ํ์ฌ ์กฐ์๋ ์์ฒญ์ ๋ณด๋ธ๋ค๋ฉด,
๊ฑฐ๊ธฐ์ ๋ password๋ฅผ ์
๋ ฅํด์ผ๋ง ๊ฐ๋ฅํ๋ค๊ณ ์ฌ์์ฒญ์ ํ๋ค๋ฉด ์ด ๊ณต๊ฒฉ์ ์คํจํ ๊ฒ
CSRF ํ ํฐ ์ฌ์ฉํ๊ธฐ
โ ์๋ฒ ์ธก์์ CSRF ๊ณต๊ฒฉ์ ๋ณดํธํ๊ธฐ ์ํ ํ ํฐ ๋ฌธ์์ด์ ์ ์ ์ ๋ธ๋ผ์ฐ์ ์ ์น์ฑ์๋ง ์ ๊ณตํ์ฌ, ์ด ์กฐํฉ์ผ๋ก ์์ฑ๋ ์์ฒญ์๋ง ์ฑ๊ณต์ ์ผ๋ก ์์ฒญ์ ์๋ฃํ๋ ๋ฐฉ์
โ
Ex. ํด์ปค๊ฐ ๋ค๋ฅธ ์น์ฌ์ดํธ๋ฅผ ํด๋ฆญํ๊ฒ ํ์ฌ ๋์ ๋นผ๊ฐ๋ ๊ฒ ๋ฐฉ์ง ๊ฐ๋ฅ
Same-site cookie ์ฌ์ฉํ๊ธฐ
โ ๊ฐ์ ๋๋ฉ์ธ์์๋ง ์ธ์
/์ฟ ํค๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ๋ง๋ค์ด์, ๋๋ฉ์ธ์ด ๋ค๋ฅด๋ค๋ฉด ์์ฒญ์ ๋ฐ์์ฃผ์ง ์๋ ๋ฐฉ์
โ
Ex. ํด์ปค๊ฐ ๋ณด๋ธ ํ์ดํผ๋งํฌ๋ฅผ ํด๋ฆญํด์ ์์ฒญ์ ํ๋๋ผ๋ ๋๋ฉ์ธ์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ์ฟ ํค ์ ์ก ์๋จ
HTTPS ํ์ ์ ์ฉ
๋ฏผ๊ฐํ ์ ๋ณด๋ ์ต๋ํ ๋ ธ์ถ X
OWASP๊ฐ์ ๋ณด์ ๊ฐ์ด๋ ์ ์ฉ
( ์น ์ ํ๋ฆฌ์ผ์ด์
์ ๋ํ ๋ณด์ ์๋ฌ ์ค๋ช
)
์ ๊ฒ์ฆ๋ ๋ณด์ ํ๋ ์์ํฌ ์ฌ์ฉ
์ด๋ฒ ํ์ต์ ์ดํดํ ๋ด์ฉ์ ์ข ๋ ์ฝ๊ฒ์ฝ๊ฒ ์์ฑํ๋ ค๊ณ ํ๋ค๋ณด๋ ์ข ๋ฆ์๋ค.
๊ทธ๋๋ ๊ทธ๋งํผ ์ดํด๊ฐ ์๋ฒฝํ๊ฒ ๋ ๊ฒ ๊ฐ์์ ๋คํ์ด๋ค !
๋ฌผ๋ก ์ดํด์ ์ต๋์ ๋ค๋ฆ ใ
์ดํด ์ ํ์ผ๋๊น ๋จธ๋ฆฌ์ ๋ฃ๋๋ก ํด์ผ์ง ..