Study/Java

[TIL] ์ธ์ฆ/๋ณด์•ˆ

hong- 2022. 7. 21. 16:29

๐Ÿ™๐Ÿป ์ธ์ฆ / ๋ณด์•ˆ

๐Ÿ’ก HTTP ๋ฌด์ƒํƒœ์„ฑ
 - ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‹๋ณ„ํ•  ์ˆ˜ ์—†์Œ์„ ์˜๋ฏธ
 - ์ฆ‰, ๋งค๋ฒˆ ์ƒˆ๋กœ์šด ์ธ์ฆ์„ ํ•ด์•ผํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€ ๋ฐœ์ƒ
 
* ์ƒํƒœ๋ฅผ ๊ธฐ์–ตํ•˜๋Š” ๋ฐฉ๋ฒ•
 โ‘  ์ฟ ํ‚ค   โ‘ก ์„ธ์…˜   โ‘ข OAuth์™€ JWT

๐Ÿ“ HTTPS

 * HTTP
 - ์ธํ„ฐ๋„ท์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ํ†ต์‹  ํ”„๋กœํ† ์ฝœ

 * HTTPS
 - HTTP + Secure

  - HTTPS : Hyper Text Transfer Protocol Secure Socket layerd์˜ ์•ฝ์ž

  - HTTPS = HTTP over SSL(TLS) = HTTP over Secure

  - HTTP ์š”์ฒญ์„ SSL ํ˜น์€ TLS ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ด์šฉํ•˜์—ฌ HTTP ํ†ต์‹ ์„ ํ•˜๋Š” ๊ณผ์ •์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•˜์—ฌ ์ „์†ก

  - HTTP ํ”„๋กœํ† ์ฝœ ๋‚ด์šฉ์„ ์•”ํ˜ธํ™”๋ฅผ ํ†ตํ•ด ๋ณด์•ˆ์„ฑ์ด ์ถ”๊ฐ€๋จ

  - ์ •ํ™•ํ•œ ํ‚ค๊ฐ€ ์—†๋‹ค๋ฉด ๋…ธ์ถœ์ด ๋˜๋”๋ผ๋„ ์•Œ ์ˆ˜ ์—†์Œ


 

 โ‘  ์ธ์ฆ์„œ : Certificate

 - ๋ฐ์ดํ„ฐ ์ œ๊ณต์ž ์‹ ์› ๋ณด์žฅ ๋ฐ ๋„๋ฉ”์ธ ์ข…์†

 - ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์„œ๋ฒ„์˜ ์‘๋‹ต๊ณผ ์ธ์ฆ์„œ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Œ

 - ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•œ ์„œ๋ฒ„๊ฐ€ ์ •๋ง๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ธ ์„œ๋ฒ„์ธ์ง€ ์ธ์ฆ ๋ฐ ํ™•์ธํ•˜๋Š” ์šฉ๋„

 - ์ธ์ฆ์„œ ๋‚ด์šฉ์— ์„œ๋ฒ„์˜ ๋„๋ฉ”์ธ ๊ด€๋ จ ๋‚ด์šฉ์ด ์žˆ์–ด์„œ ๋ฐ์ดํ„ฐ ์ œ๊ณต์ž์˜ ์ธ์ฆ์„ ์šฉ์ดํ•˜๊ฒŒ ํ•จ

 - ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์„ ๋ฐ›๋Š”๋‹ค๋ฉด ์ธ์ฆ์„œ์™€ ํ•จ๊ป˜ ์‘๋‹ต์„ ์ „์†กํ•จ

 - ์‘๋‹ต์„ ๋ฐ›์€ ํด๋ผ์ด์–ธํŠธ๋Š” ์ธ์ฆ์„œ์— ์ž‘์„ฑ๋œ ๋„๋ฉ”์ธ๊ณผ ์‘๋‹ต ๊ฐ์ฒด์— ์ž‘์„ฑ๋œ ๋„๋ฉ”์ธ์„ ๋น„๊ต

 - ์ฆ‰ ์šฐ๋ฆฌ๊ฐ€ Naver์— ์ ‘์†ํ–ˆ์„ ๋•Œ ํ•ด์ปค๊ฐ€ ์ •๊ตํ•˜๊ฒŒ ๋”ฐ๋ผํ•œ ๊ฐ€์งœ Naver๊ฐ€ ์•„๋‹˜์„ ๋ณด์žฅ


 โ‘ก CA 

 - ๊ณต์ธ ์ธ์ฆ์„œ ๋ฐœ๊ธ‰ ํ•ด์ฃผ๋Š” ๊ณต์ธ๋œ ๊ธฐ๊ฐ„

 - ๊ฐ ๋ธŒ๋ผ์šฐ์ €๋Š” ์‹ ๋ขฐํ•˜๋Š” CA์˜ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Œ ( ๋ธŒ๋ผ์šฐ์ € ๋งˆ๋‹ค ์ธ์ฆ์„œ ์ฐจ์ด ์žˆ์Œ )

 - ์„œ๋ฒ„์˜ ์‹ ์›์„ ๋ณด์žฅํ•ด์ฃผ๋Š” ์ œ 3์ž๋ฅผ CA๋ผ๊ณ  ํ•จ

 - ์„œ๋ฒ„์˜ ๊ณต๊ฐœํ‚ค์™€ ์ •๋ณด๋ฅผ CA์˜ ๋น„๋ฐ€ํ‚ค๋กœ ์•”ํ˜ธํ™”ํ•˜์—ฌ ์ธ์ฆ์„œ ๋ฐœ๊ธ‰ํ•จ

 - ์ธ์ฆ์„œ๋Š” CA์˜ ๋น„๋ฐ€ํ‚ค๋กœ ์•”ํ˜ธํ™”๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ CA์˜ ๊ฐœ์ธํ‚ค๋กœ ๋ณตํ˜ธํ™” ๊ฐ€๋Šฅํ•จ


 โ‘ข ๋น„๋Œ€์นญ ํ‚ค ์•”ํ˜ธํ™”

 - ์ „ํ˜€ ๋‹ค๋ฅธ ํ‚ค ํ•œ ์Œ์œผ๋กœ ์•”ํ˜ธํ™” ๋ฐ ๋ณตํ˜ธํ™” ์ง„ํ–‰ ๊ฐ€๋Šฅ

 - ์ฆ‰, A ํ‚ค๋กœ ์•”ํ˜ธํ™” ํ–ˆ๋‹ค๋ฉด ๋ณตํ˜ธํ™” ํ•  ๋•Œ๋Š” A๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ํ‚ค ํ•„์š”


 โ‘ฃ ์•”ํ˜ธํ™”

 - ์ œ 3์ž๊ฐ€ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ฃผ๊ณ ๋ฐ›๋Š” ์ •๋ณด๋ฅผ ํƒˆ์ทจํ•  ์ˆ˜ ์—†๋„๋ก ํ•˜๋Š” ๊ฒƒ

 - ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋กœ ํ•ฉ์˜ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•˜์—ฌ ์ฃผ๊ณ ๋ฐ›์Œ

    → ์ œ 3์ž์—๊ฒŒ ๋ฐ์ดํ„ฐ๊ฐ€ ํƒˆ์ทจ๋˜์–ด๋„ ์„œ๋กœ๊ฐ€ ํ•ฉ์˜ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•˜์—ฌ ์ฃผ๊ณ  ๋ฐ›์Œ

 - ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•˜์—ฌ ์ฃผ๊ณ ๋ฐ›๊ธฐ ์œ„ํ•ด ๋น„๋Œ€์นญํ‚ค์™€ ๋Œ€์นญํ‚ค ๋ฐฉ์‹ ํ˜ผ์šฉํ•ด์„œ ์‚ฌ์šฉ

๐Ÿ’ก ๋Œ€์นญํ‚ค ๋ฐฉ์‹

  : ์–‘์ชฝ์ด ๊ณตํ†ต์˜ ๋น„๋ฐ€ ํ‚ค๋ฅผ ๊ณต์œ ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™” ๋ฐ ๋ณตํ˜ธํ™” ํ•˜๋Š” ๊ฒƒ

   - ์ปดํ“จํ„ฐ์— ๋ถ€๋‹ด์„ ๋œ ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ์ฃผ๋กœ ์‚ฌ์šฉ

   - But ๋Œ€์นญํ‚ค๋ฅผ ์„œ๋กœ ์ฃผ๊ณ  ๋ฐ›๋Š” ๊ณผ์ •์—์„œ ๋ถ€ํ„ฐ ์ •๋ณด๊ฐ€ ํƒˆ์ทจ๋  ์ˆ˜ ์žˆ์Œ

      → ์•”ํ˜ธํ™”์˜ ์œ ๋ฌด์™€ ๊ด€๊ผ์—†์ด ๋ชจ๋“  ๋ฐ์ดํ„ฐ ๋ณตํ˜ธํ™” ๊ฐ€๋Šฅ

๐Ÿ’ก ๋น„๋Œ€์นญํ‚ค ๋ฐฉ์‹

  : ๊ฐ๊ฐ ๊ณต๊ฐœํ‚ค์™€ ๋น„๋ฐ€ํ‚ค๋ฅผ๊ฐ€์ง€๊ณ  ์ƒ๋Œ€๊ฐ€ ๋‚˜์˜ ๊ณต๊ฐœํ‚ค๋กœ ์•”ํ˜ธํ™”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐœ์ธ์ด ๊ฐ€์ง„ ๋น„๋ฐ€ํ‚ค๋กœ ๋ณตํ˜ธํ™” ํ•˜๋Š” ๊ฒƒ

  - HTTPS๊ฐ€ ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹

  - ์ค‘๊ฐ„์— ๋Œ€์นญํ‚ค๊ฐ€ ํƒˆ์ทจ๋˜์–ด๋„ ๊ฐœ์ธํ‚ค ์—†์ด๋Š” ๋ณตํ˜ธํ™”ํ•  ์ˆ˜ ์—†์Œ

  ๋Œ€์นญํ‚ค ๋น„๋Œ€์นญํ‚ค
ํ‚ค๊ด€๊ณ„ ์•”ํ˜ธํ™” ํ‚ค = ๋ณตํ˜ธํ™” ํ‚ค ์•”ํ˜ธํ™” ํ‚ค != ๋ณตํ˜ธํ™” ํ‚ค
์•”ํ˜ธํ™” ํ‚ค ๋น„๋ฐ€ ํ‚ค ๊ณต๊ฐœ ํ‚ค
๋ณตํ˜ธํ™” ํ‚ค ๋น„๋ฐ€ ํ‚ค ๊ฐœ์ธ ํ‚ค

  โ–ธ ๊ณต๊ฐœ ํ‚ค ? ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๊ณต๊ฐœ๋œ ํ‚ค์ด๋ฉฐ ์ •๋ณด๋ฅผ ์•”ํ˜ธํ™” ํ•  ์ˆ˜ ์žˆ์Œ

  โ–ธ ๋น„๋ฐ€ ํ‚ค ? ์‚ฌ์šฉ์ž๋งŒ ์•Œ๊ณ  ์žˆ๋Š” ์•”ํ˜ธ๋ฅผ ํ’€ ์ˆ˜ ์žˆ๋Š” ํ‚ค 

๐Ÿ’ก TLS or SSL

  : ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๊ฐ„์˜ CA๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„๋ฅผ ์ธ์ฆํ•˜๋Š” ๊ณผ์ •๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•˜๋Š” ๊ณผ์ •์„ ์•„์šฐ๋ฅธ ํ”„๋กœํ† ์ฝœ


๐Ÿ”น ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„์™€์˜ ํ†ต์‹  ๊ณผ์ •

 โ–ธ Hand Shake

 - ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ์„œ๋กœ๋ฅผ ํ™•์ธ

 - ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ๊ณต๊ฐœํ‚ค ์ค‘์˜ ํ•˜๋‚˜๋ฅผ ์ „๋‹ฌํ•จ

 โ–ธ ๋น„๋ฐ€ ํ‚ค ์ƒ์„ฑ

 - ํด๋ผ์ด์–ธํŠธ๋Š” ์ „๋‹ฌ๋ฐ›์€ ๊ณต๊ฐœํ‚ค๋ฅผ ์ด์šฉํ•ด์„œ ์„œ๋ฒ„์™€ ํ‚ค๋ฅผ ๋งŒ๋“ค์–ด ๋‚ผ ์ž„์˜์˜ ์ •๋ณด๋ฅผ ์•”ํ˜ธํ™”ํ•ด์„œ ์ „์†ก

 - ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ž„์˜์˜ ์ •๋ณด๋ฅผ ์•”ํ˜ธํ™”ํ•ด์„œ ์ „์†ก

 - ์„œ๋กœ ๋งŒ๋“ค๊ณ  ๊ตํ™˜ํ•œ ์ž„์˜์˜ ์ •๋ณด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๋น„๋ฐ€ํ‚ค๋ฅผ ์ƒ์„ฑ

 โ–ธ ์ƒํ˜ธ ํ‚ค ๊ฒ€์ฆ

 - ๊ฐ์ž ์ƒ์„ฑํ•œ ํ‚ค๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ…Œ์ŠคํŠธ์šฉ ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“ค์–ด ๋‚ธ ๋น„๋ฐ€ ํ‚ค๋กœ ์•”ํ˜ธํ™”ํ•ด์„œ ์ „๋‹ฌ


๐Ÿ”น Java์˜ ์ธ์ฆ์„œ ํ˜•์‹

 โ–ธ PKCS12 : Public Key Cryptographic Standards #12

  - ์—ฌ๋Ÿฌ ์ธ์ฆ์„œ์™€ ํ‚ค๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์•”ํ˜ธ๋กœ ๋ณดํ˜ธ๋œ ํ˜•์‹

 โ–ธ JKS

  - PKCS12์™€ ์œ ์‚ฌํ•˜๋ฉฐ ๋…์  ํ˜•์‹์œผ๋กœ Javaํ™˜๊ฒฝ์œผ๋กœ๋งŒ ์ œํ•œ๋จ


๐Ÿ“ Encryption : ์•”ํ˜ธํ™”

  - ์ผ๋ จ์˜ ์ •๋ณด๋ฅผ ์ž„์˜์˜ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค๋ฅธ ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜

      → ํ•ด๋‹น ๋ฐฉ์‹์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์†Œ์œ ํ•œ ์‚ฌ๋žŒ์„ ์ œ์™ธํ•˜๊ณ  ์ดํ•ดํ•  ์ˆ˜ ์—†๋„๋ก ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ด์šฉํ•˜์—ฌ ์ •๋ณด ๊ด€๋ฆฌ

shiftBy(content : "banana", offset : 2)   // dcpcpc
shiftBy(content : "dcpcpc", offset : -2)  // banana

  โ–ช๏ธ shiftBy( )

  - ์ž…๋ ฅ๋ฐ›์€ ๋ฌธ์ž์—ด์„ ์ž…๋ ฅ๋ฐ›์€ ์ˆซ์ž์˜ ๊ฐ’ ๋งŒํผ ์•ŒํŒŒ๋ฒณ ์ˆœ์„œ๋ฅผ ๊ฑด๋„ˆ๋›ด ๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋ฌธ์ž์—ด ๋ฐ˜ํ™˜

  - ์ฆ‰ ( a, 2 ) ๋ผ๋ฉด a ์—์„œ ๋‘๋ฒˆ์˜ ์•ŒํŒŒ๋ฒณ์„ ๊ฑด๋„ˆ ๋›ด c๊ฐ€ ๋ฐ˜ํ™˜๋จ


๐Ÿ“ Hashing

  - ์–ด๋– ํ•œ ๋ฌธ์ž์—ด์— ์ž„์˜์˜ ์—ฐ์‚ฐ์„ ์ ์šฉํ•˜์—ฌ ๋‹ค๋ฅธ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ

  โ‘  ๋ชจ๋“  ๊ฐ’์— ๋Œ€ํ•ด ํ•ด์‹œ ๊ฐ’์„ ๊ณ„์‚ฐํ•˜๋Š”๋ฐ ์˜ค๋ž˜ ๊ฑธ๋ฆฌ์ง€ ์•Š์•„์•ผ ํ•จ

    - ํ•ด์‹œ ๊ฐ’์„ ํ•ด๋…ํ•˜๋Š”๋ฐ๋Š” ๋งŽ์€ ์‹œ๊ฐ„์„ ๊ฑธ๋ฆฌ์ง€๋งŒ ํ•ด์‹œ ๊ฐ’์„ ๋งŒ๋“œ๋Š”๋ฐ๋Š” ์˜ค๋ž˜ ๊ฑธ๋ฆฌ์ง€ ์•Š์•„์•ผ ํ•จ

    - ํ•ด์‹œ ๊ฐ’์„ ๋งŒ๋“œ๋Š”๋ฐ 30์ดˆ๊ฐ€ ๊ฑธ๋ฆฌ๋ฉด ๋กœ๊ทธ์ธํ•˜๋Š”๋ฐ์—๋„ ์ตœ์†Œ 30์ดˆ๊ฐ€ ๊ฑธ๋ฆผ

  โ‘ก ์ตœ๋Œ€ํ•œ ํ•ด์‹œ ๊ฐ’์„ ํ”ผํ•ด์•ผ ํ•˜๋ฉฐ ๋ชจ๋“  ๊ฐ’์€ ๊ณ ์œ ํ•œ ํ•ด์‹œ ๊ฐ’์„ ๊ฐ€์ง

  โ‘ข ์•„์ฃผ ์ž‘์€ ๋‹จ์œ„์˜ ๋ณ€๊ฒฝ์ด๋ผ๋„ ์™„์ „ํžˆ ๋‹ค๋ฅธ ํ•ด์‹œ ๊ฐ’์„ ๊ฐ€์ ธ์•ผ ํ•จ 

๐Ÿ”ธ Salt

 - ์•”ํ˜ธํ™” ํ•ด์•ผ ํ•˜๋Š” ๊ฐ’์— ์–ด๋–ค ๋ณ„๋„์˜ ๊ฐ’์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ๋ณ€ํ˜•ํ•˜๋Š” ๊ฒƒ

 โ‘  ์•”ํ˜ธํ™”๋งŒ ํ•ด๋†“๋Š”๋‹ค๋ฉด ํ•ด์‹œ๊ฒฐ๊ณผ๊ฐ€ ํ•ญ์ƒ ๋™์ผ

   - ํ•ด์‹œ๋œ ๊ฐ’๊ณผ ์›๋ž˜ ๊ฐ’์˜ ํ…Œ์ด๋ธ”์„ ๋ ˆ์ธ๋ณด์šฐ ํ…Œ์ด๋ธ”๋กœ ๋งŒ๋“ค์–ด decoding ํ•ด๋ฒ„๋ฆฌ๋Š” ๊ฒฝ์šฐ๋„ ์ƒ๊น€

 โ‘ก ์›๋ณธ ๊ฐ’์— ์ž„์˜๋กœ ์•ฝ์†๋œ ๋ณ„๋„์˜ ๋ฌธ์ž์—ด์„ ์ถ”๊ฐ€ํ•˜์—ฌ ํ•ด์‹œ ์ง„ํ–‰ํ•œ๋‹ค๋ฉด ๊ธฐ์กด ํ•ด์‹œ๊ฐ’๊ณผ ์ „ํ˜€ ๋‹ค๋ฅธ ํ•ด์‹œ ๊ฐ’ ๋ฐ˜ํ™˜

   - ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋…ธ์ถœ ๋˜๋”๋ผ๋„ ์›๋ณธ ๊ฐ’์„ ๋ณดํ˜ธํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์•ˆ์ „ ์žฅ์น˜๊ฐ€ ๋จ


๐Ÿ“ Cookie

: ์„œ๋ฒ„์—์„œ ํด๋ผ์ด์–ธํŠธ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜ 

 → ์„œ๋ฒ„๊ฐ€ ์›ํ•˜๋ฉด ํด๋ผ์ด์–ธํŠธ์—์„œ ์ฟ ํ‚ค๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Œ

  - ์–ด๋–ค ์›น ์‚ฌ์ดํŠธ์— ๋“ค์–ด๊ฐ”์„ ๋•Œ, ์„œ๋ฒ„๊ฐ€ ์ผ๋ฐฉ์ ์œผ๋กœ ํด๋ผ์ด์–ธํŠธ์— ์ „๋‹ฌํ•˜๋Š” ์ž‘์€ ๋ฐ์ดํ„ฐ

  - ์„œ๋ฒ„๊ฐ€ ์›น ๋ธŒ๋ผ์šฐ์ €์— ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ณ  ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋Š” ์ˆ˜๋‹จ

  - ํ•ด๋‹น ๋„๋ฉ”์ธ์— ๋Œ€ํ•ด ์ฟ ํ‚ค๊ฐ€ ์กด์žฌํ•˜๋ฉด ์›น ๋ธŒ๋ผ์šฐ์ €๋Š” ๋„๋ฉ”์ธ์—๊ฒŒ http ์š”์ฒญ์‹œ ์ฟ ํ‚ค๋ฅผ ํ•จ๊ป˜ ์ „๋‹ฌ

 ๐Ÿ’ก ์„œ๋ฒ„๋Š” ์ฟ ํ‚ค๋ฅผ ํ†ตํ•ด ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋ ค๊ณ  ํ• ๊นŒ ?

    : ์ฟ ํ‚ค๋Š” ์‚ญ์ œํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์‚ฌ๋ผ์ง€์ง€ ์•Š๋Š”๋‹ค !

    → ์žฅ๊ธฐ๊ฐ„ ์ €์žฅํ•ด์•ผ ํ•˜๋Š” ์˜ต์…˜(ex. ๋กœ๊ทธ์ธ ์ƒํƒœ ์œ ์ง€ ๋“ฑ)์„ ์ €์žฅํ•˜๊ธฐ์— ์ ํ•ฉ

 ๐Ÿ’ก ์ฟ ํ‚ค๋ฅผ ์ด์šฉํ•œ ์ƒํƒœ ์œ ์ง€

   - ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์— ์ธ์ฆ ์ •๋ณด๋ฅผ ๋‹ด์€ ์ฟ ํ‚ค ์ „์†ก  +  ํด๋ผ์ด์–ธํŠธ๋Š” ์ „๋‹ฌ๋ฐ›์€ ์ฟ ํ‚ค๋ฅผ ์š”์ฒญ๊ณผ ๊ฐ™์ด ์ „์†ก

      = Statelessํ•œ ์ธํ„ฐ๋„ท ์—ฐ๊ฒฐ์„ Stateful ํ•˜๊ฒŒ ์œ ์ง€ ๊ฐ€๋Šฅ


๐Ÿ”น Cookie์˜ ์˜ต์…˜

  โ–ธ Domain

   : ์„œ๋ฒ„์™€ ์š”์ฒญ์˜ ๋„๋ฉ”์ธ์ด ์ผ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ ์ฟ ํ‚ค ์ „์†ก

   - ๋„๋ฉ”์ธ์€ www.google.com๊ณผ ๊ฐ™์ด ์„œ๋ฒ„์— ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋Š” ์ด๋ฆ„ 

      → ๋„๋ฉ”์ธ์€ ํฌํŠธ๋ฒˆํ˜ธ(3000), ์„œ๋ธŒ๋„๋ฉ”์ธ ์ •๋ณด(www), ์„ธ๋ถ€ ๊ฒฝ๋กœ(users/login)๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š์Œ

   - http://www.localhost.com:3000/users/login ์ด๋ผ๊ณ  ํ•˜๋ฉด ๋„๋ฉ”์ธ์€ localhost.com


  โ–ธ Path

   : ์„œ๋ฒ„์™€ ์š”์ฒญ์˜ ์„ธ๋ถ€๊ฒฝ๋กœ๊ฐ€ ์ผ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ ์ฟ ํ‚ค ์ „์†ก

  - ์„ธ๋ถ€ ๊ฒฝ๋กœ๋Š” ์„œ๋ฒ„๊ฐ€ ๋ผ์šฐํŒ…ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ๋กœ


  โ–ธ MaxAge or Expires

   : ์ฟ ํ‚ค์˜ ์œ ํšจ๊ธฐ๊ฐ„ ์„ค์ •

   - ์ฟ ํ‚ค๊ฐ€ ์˜์›ํžˆ ๋‚จ์•„์žˆ๋‹ค๋ฉด ๊ทธ๋งŒํผ ํƒˆ์ทจ๋˜๊ธฐ๋„ ์‰ฌ์›Œ์ง€๊ธฐ ๋•Œ๋ฌธ์— ์œ ํšจ๊ธฐ๊ฐ„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์€ ๋ณด์•ˆ ์ธก๋ฉด์—์„œ ์ค‘์š”

   - PC๋ฐฉ์—์„œ ๋กœ๊ทธ์•„์›ƒ์„ ์•ˆํ–ˆ์„ ๋•Œ ์„œ๋ฒ„์—์„œ ์ฟ ํ‚ค์— MaxAge or Expires ์˜ต์…˜์„ ํ†ตํ•ด ์œ ํšจ ๊ธฐ๊ฐ„ ์ง€์ • → ์ผ์ • ์‹œ๊ฐ„ ํ›„ ์ž๋™ ์†Œ๋ฉธ

   - MaxAge : ์•ž์œผ๋กœ ๋ช‡ ์ดˆ ๋™์•ˆ ์ฟ ํ‚ค๊ฐ€ ์œ ํšจํ•œ์ง€ ์„ค์ •

   - Expires : MaxAge์™€ ๋น„์Šทํ•˜์ง€๋งŒ ์–ธ์ œ๊นŒ์ง€ ์œ ํšจํ•œ์ง€ Date ์ง€์ • ( ํด๋ผ์ด์–ธํŠธ ์‹œ๊ฐ„ ๊ธฐ์ค€ )

       โ–ช๏ธ  ์„ธ์…˜ ์ฟ ํ‚ค

      - MaxAge ๋˜๋Š” Expires ์˜ต์…˜์ด ์—†๋Š” ์ฟ ํ‚ค

      - ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์‹คํ–‰์ค‘์ผ ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ž„์‹œ ์ฟ ํ‚ค

      - ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ํ•ด๋‹น ์ฟ ํ‚ค๋Š” ์‚ญ์ œ ๋จ

      โ–ช๏ธ  ์˜์†์„ฑ ์ฟ ํ‚ค

      - ๋ธŒ๋ผ์šฐ์ €์˜ ์ข…๋ฃŒ ์—ฌ๋ถ€์™€ ์ƒ๊ด€์—†์ด MaxAge / Expires์— ์ง€์ •๋œ ์œ ํšจ์‹œ๊ฐ„๋งŒํผ ์‚ฌ์šฉ ๊ฐ€๋Šฅ


  โ–ธ HttpOnly

   : ์Šคํฌ๋ฆฝํŠธ์˜ ์ฟ ํ‚ค ์ ‘๊ทผ ๊ฐ€๋Šฅ ์—ฌ๋ถ€ ๊ฒฐ์ •

   - ํ•ด๋‹น ์˜ต์…˜์ด true์ด๋ฉด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” ์ฟ ํ‚ค์— ์ ‘๊ทผ ๋ถˆ๊ฐ€ (๊ธฐ๋ณธ๊ฐ’ false)

   - ์Šคํฌ๋ฆฝํŠธ ์ฟ ํ‚ค ์ ‘๊ทผ์„ ๋ง‰๊ณ  ๋ธŒ๋ผ์šฐ์ €๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Œ

   - ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ๋กœ ์ ‘๊ทผ ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ์ด ๊ฒฝ์šฐ XSS ๊ณต๊ฒฉ์— ์ทจ์•ฝํ•จ


  โ–ธ Secure

   :  HTTPS ํ”„๋กœํ† ์ฝœ์—์„œ๋งŒ ์ฟ ํ‚ค ์ „์†ก ์—ฌ๋ถ€ ๊ฒฐ์ •

   - ์ฟ ํ‚ค๋ฅผ ์ „์†กํ•  ๋•Œ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์— ๋”ฐ๋ฅธ ์ฟ ํ‚ค์ „์†ก ์—ฌ๋ถ€ ๊ฒฐ์ •

   - ํ•ด๋‹น ์˜ต์…˜์ด true ๋ผ๋ฉด HTTPS๋งŒ ๊ฐ€๋Šฅ

  - Secure ์˜ต์…˜์ด ์—†๋‹ค๋ฉด HTTP, HTTPS ๋‘˜ ๋‹ค ๊ฐ€๋Šฅ


โ–ธ SameSite

   : CORS (Cross-Origin) ์š”์ฒญ์„ ๋ฐ›์€ ๊ฒฝ์šฐ ์‚ฌ์šฉํ•œ ๋ฉ”์†Œ๋“œ์™€ ํ•ด๋‹น ์˜ต์…˜ (GET, POST, PUT, PATCH, .. )์˜ ์กฐํ•ฉ์œผ๋กœ

     ์„œ๋ฒ„์˜ ์ฟ ํ‚ค ์ „์†ก ์—ฌ๋ถ€ ๊ฒฐ์ •

   - ๊ฐ™์€ ์‚ฌ์ดํŠธ์—์„œ๋งŒ ์ฟ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•   ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ์„ค์ •

   - SameSite๋Š” ์š”์ฒญ์„ ๋ณด๋‚ธ Origin๊ณผ ์„œ๋ฒ„์˜ ๋„๋ฉ”์ธ, ํ”„๋กœํ† ์ฝœ, ํฌํŠธ๊ฐ€ ๊ฐ™์€ ๊ฒฝ์šฐ๋ฅผ ๋งํ•จ

      → ์ด ์ค‘ ํ•˜๋‚˜๋ผ๋„ ๋‹ค๋ฅด๋‹ค๋ฉด Cross-Origin์œผ๋กœ ๊ตฌ๋ถ„ํ•จ

    โ‘  Lax : GET ๋ฉ”์„œ๋“œ ์š”์ฒญ์—๋งŒ ์ฟ ํ‚ค ์ „์†ก ๊ฐ€๋Šฅ

    โ‘ก Strict : ์ฟ ํ‚ค ์ „์†ก ๋ถˆ๊ฐ€

    โ‘ข None : ๋ชจ๋“  ๋ฉ”์„œ๋“œ ์š”์ฒญ์— ๋Œ€ํ•ด ์ฟ ํ‚ค ์ „์†ก ๊ฐ€๋Šฅ

     → None ์˜ต์…˜์€ Secure ์ฟ ํ‚ค ์˜ต์…˜๊ณผ HTTPS ํ”„๋กœํ† ์ฝœ ์‚ฌ์šฉํ•ด์•ผ ์•ˆ์ „


๐Ÿ“Session

  - ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์— ์œ ์ผํ•˜๊ณ  ์•”ํ˜ธํ™”๋œ ID๋ฅผ ๋ถ€์—ฌ

  - ์ค‘์š” ๋ฐ์ดํ„ฐ๋Š” ์„œ๋ฒ„์—์„œ ๊ด€๋ฆฌ

 ๐Ÿ’ก ์ฟ ํ‚ค์™€ ์„ธ์…˜์˜ ์ฐจ์ด๋Š” ?

   โ–ธ ์ฟ ํ‚ค

    - Http์˜ Statelessํ•œ ๊ฒƒ์„ ๋ณด์™„ํ•ด์ฃผ๋Š” ๋„๊ตฌ

    - ์ €์žฅ ๊ฒฝ๋กœ : ํด๋ผ์ด์–ธํŠธ

    - ์žฅ์  : ์„œ๋ฒ„์— ๋ถ€๋‹ด์„ ๋œ์–ด์คŒ (ํด๋ผ์ด์–ธํŠธ์— ์ €์žฅํ•˜๋‹ˆ๊น)

    - ๋‹จ์  : ์ฟ ํ‚ค ๊ทธ ์ž์ฒด๋Š” ์ธ์ฆ์ด ์•„๋‹˜

  โ–ธ ์„ธ์…˜

    - ์ ‘์† ์ƒํƒœ์™€ ๊ถŒํ•œ ๋ถ€์—ฌ๋ฅผ ์œ„ํ•ด ์„ธ์…˜ ์•„์ด๋””๋ฅผ ์ฟ ํ‚ค๋กœ ์ „์†ก

    - ์ €์žฅ ๊ฒฝ๋กœ : ์„œ๋ฒ„

    - ์žฅ์  : ์‹ ๋ขฐํ•  ์ˆ˜ ์ž‡๋Š” ์œ ์ €์ธ์ง€ ์„œ๋ฒ„์—์„œ ์ถ”๊ฐ€๋กœ ํ™•์ธ ๊ฐ€๋Šฅ

    - ๋‹จ์  : ํ•˜๋‚˜์˜ ์„œ๋ฒ„์—์„œ๋งŒ ์ ‘์† ์ƒํƒœ๋ฅผ ๊ฐ€์ง€๋ฏ€๋กœ ๋ถ„์‚ฐ ๋ถˆ๋ฆฌ


๐Ÿ”ธ ์„ธ์…˜ ๊ธฐ๋ฐ˜ ์ธ์ฆ - ๋กœ๊ทธ์ธ

 : ์ธ์ฆ์— ๋”ฐ๋ผ ์ ‘๊ทผ ๊ถŒํ•œ์ด ๋‹ฌ๋ผ์ง

 - ์„œ๋ฒ„ : ์‚ฌ์šฉ์ž๊ฐ€ ์ธ์ฆ์— ์„ฑ๊ณตํ–ˆ์Œ์„ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•จ

 - ํด๋ผ์ด์–ธํŠธ : ์ธ์ฆ ์„ฑ๊ณต์„ ์ฆ๋ช…ํ•  ์ˆ˜๋‹จ์„ ๊ฐ–๊ณ  ์žˆ์–ด์•ผ ํ•จ

 

โ‘  ์„ธ์…˜ : ์‚ฌ์šฉ์ž๊ฐ€ ์ธ์ฆ์„ ์„ฑ๊ณตํ•œ ์ƒํƒœ

 - ์„œ๋ฒ„๋Š” ์ผ์ข…์˜ ์ €์žฅ์†Œ์— ์„ธ์…˜์„ ์ €์žฅํ•จ

โ‘ก ์„ธ์…˜ ID : ๊ฐ ์„ธ์…˜์„ ๊ตฌ๋ถ„

 - ์„ธ์…˜์ด ๋งŒ๋“ค์–ด์ง€๋ฉด ๊ฐ ์„ธ์…˜์„ ๊ตฌ๋ถ„ํ•  ์„ธ์…˜ ์•„์ด๋”” ์ƒ์„ฑ๋จ

 - ๋ณดํ†ต ํด๋ผ์ด์–ธํŠธ์— ์„ธ์…˜ ์„ฑ๊ณต์„ ์ฆ๋ช…ํ•  ์ˆ˜๋‹จ์œผ๋กœ ์„ธ์…˜ ์•„์ด๋”” ์ „๋‹ฌ

โ‘ข ์ฟ ํ‚ค ์‚ฌ์šฉ : ๋กœ๊ทธ์ธ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ์ˆ˜๋‹จ์œผ๋กœ ์‚ฌ์šฉ

 - ์ฟ ํ‚ค์—๋Š” ์„œ๋ฒ„์—์„œ ๋ฐœ๊ธ‰ํ•œ ์„ธ์…˜ ์•„์ด๋””๋ฅผ ์ €์žฅํ•จ

 

๐Ÿ”ธ ์„ธ์…˜ ๊ธฐ๋ฐ˜ ์ธ์ฆ - ๋กœ๊ทธ์•„์›ƒ

 - ์„ธ์…˜ ์•„์ด๋””๊ฐ€ ๋‹ด๊ธด ์ฟ ํ‚ค๋Š” ํด๋ผ์ด์–ธํŠธ์—, ์„ธ์…˜์€ ์„œ๋ฒ„์— ์ €์žฅ

 - ์„œ๋ฒ„๋Š” ์„ธ์…˜ ์•„์ด๋””๋กœ๋งŒ ์ธ์ฆ ์—ฌ๋ถ€ ํŒ๋‹จ

 - ์„œ๋ฒ„ : ์„ธ์…˜ ์ •๋ณด๋ฅผ ์‚ญ์ œํ•ด์•ผ ํ•จ

 - ํด๋ผ์ด์–ธํŠธ : ์ฟ ํ‚ค๋ฅผ ๊ฐฑ์‹ ํ•ด์•ผ ํ•จ


 ๐Ÿ’ก Web Application Security

   - ๊ฐœ๋ฐœ์ž๋“ค์ด ์›น ์‚ฌ์ดํŠธ, ๋ชจ๋ฐ”์ผ ์–ดํ”Œ, ์›น API ๋“ฑ์„ ๋งŒ๋“ค ๋•Œ ํ•ด์ปค๋“ค์˜ ๊ณต๊ฒฉ์„ ๋ง‰๊ธฐ ์œ„ํ•œ ํ•„์ˆ˜ ๋ณด์•ˆ ์‚ฌํ•ญ


๐Ÿ“ ์›น ๋ณด์•ˆ ๊ณต๊ฒฉ

๐Ÿ‘‰๐Ÿป SQL Injection

 : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ž„์˜์˜ SQL๋ฌธ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ช…๋ น์–ด๋ฅผ ์‚ฝ์ž…ํ•˜๋Š” ๊ณต๊ฒฉ

 - ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ๋ณด์•ˆ์ƒ์˜ ํ—ˆ์ ์„ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅด ๋น„์ •์ƒ์ ์œผ๋กœ ์กฐ์ž‘

   → ์ด๋กœ ์ธํ•ด ๊ธฐ๋ก์ด ์‚ญ์ œ๋˜๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ ์œ ์ถœ ๊ฐ€๋Šฅ

(1) ๊ณต๊ฒฉ์ž๊ฐ€ ์•…์˜์ ์ธ SQL๋ฌธ์„ ๋„ฃ์–ด ์„œ๋ฒ„์— ์ „์†ก
(2) ์„œ๋ฒ„์— ํ•ด๋‹น SQL๋ฌธ์„ ๊ธฐ์กด SQL์— ์‚ฝ์ž…ํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ฟผ๋ฆฌ๋ฅผ ๋ณด๋ƒ„
    id = '{์‚ฌ์šฉ์ž ID}'  → id = '{์‚ฌ์šฉ์ž ID}' OR '1'='1'
(3) ID ๊ฒ€์ฆ ์—ฌ๋ถ€์™€ ์ƒ๊ด€์—†์ด '1' = '1'์€ ์ฐธ์ด๋ฏ€๋กœ ๋ชจ๋“  ์‚ฌ์šฉ์ž ์ •๋ณด ๋ฐ˜ํ™˜
(4) ๋ชจ๋“  ์‚ฌ์šฉ์ž์˜ ์ •๋ณด๊ฐ€ ๊ณต๊ฒฉ์ž์—๊ฒŒ ์ „์†ก

 โ–ช๏ธ SQL Injection ๋Œ€์‘ ๋ฐฉ์•ˆ

โ‘  ์ž…๋ ฅ (์š”์ฒญ) ๊ฐ’ ๊ฒ€์ฆ

 - ํ™”์ดํŠธ ๋ฆฌ์ŠคํŠธ ๋ฐฉ์‹์œผ๋กœ ํ•ด๋‹น ํ‚ค์›Œ๋“œ๊ฐ€ ๋“ค์–ด์˜ค๋ฉด ๋‹ค๋ฅธ ๊ฐ’์œผ๋กœ ์น˜ํ™˜

 โ–ธ ํ™”์ดํŠธ ๋ฆฌ์ŠคํŠธ ? ๊ธฐ๋ณธ ์ •์ฑ…์ด ๋ชจ๋‘ ์ฐจ๋‹จ์ธ ์ƒํ™ฉ์—์„œ ์˜ˆ์™ธ์ ์œผ๋กœ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•œ ๋Œ€์ƒ ์ง€์ •

โ‘ก Prepared Statement ๊ตฌ๋ฌธ ์‚ฌ์šฉ

 - Prepared Statement ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฉด ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ์ด SQL๋ฌธ์œผ๋กœ๋ถ€ํ„ฐ ๋ถ„๋ฆฌ

 - ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ ๊ฐ’์ด ์ „๋‹ฌ๋˜๊ธฐ ์ „์— DB๊ฐ€ ๋ฏธ๋ฆฌ ์ปดํŒŒ์ผํ•˜์—ฌ SQL์„ ๋ฐ”๋กœ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  ๋Œ€๊ธฐ

    → ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ๊ฐ’์„ ๋‹จ์ˆœ ํ…์ŠคํŠธ๋กœ ์ธ์‹

โ‘ข Error Message ๋…ธ์ถœ ๊ธˆ์ง€

 - ๊ณต๊ฒฉ์ž๋Š” DB์˜ ์—๋Ÿฌ ๋ฉ”์„ธ์ง€๋ฅผ ํ†ตํ•ด ํ…Œ์ด๋ธ”์ด๋‚˜ ์ปฌ๋Ÿผ ๋“ฑ์˜ ์ •๋ณด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Œ


๐Ÿ‘‰๐Ÿป CSRF : Cross Site Request Forgery

 - ์ฃผ์†Œ๊ฐ€ ๋‹ค๋ฅธ ์‚ฌ์ดํŠธ์—์„œ ์š”์ฒญ์„ ์กฐ์ž‘ํ•˜๋Š” ๊ฒƒ

  → ์ด๋ฉ”์ผ์— ์ฒจ๋ถ€๋œ ๋งํฌ๋ฅผ ๋ˆ„๋ฅด๋ฉด ์€ํ–‰ ์ชฝ์œผ๋กœ ์š”์ฒญ์„ ๋ณด๋‚ด์„œ ๋‚ด ์€ํ–‰ ๊ณ„์ขŒ์— ๋ˆ์ด ๋น ์ ธ๋‚˜๊ฐ

 - ํ•ด์ปค๊ฐ€ ์ง์ ‘ ๋ฐ์ดํ„ฐ๋ฅผ ์ ‘๊ทผํ•  ์ˆ˜ ์—†์Œ

  → ๋‹ค๋ฅธ ์˜ค๋ฆฌ์ง„์ด๊ธฐ ๋•Œ๋ฌธ์— response์— ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜ ์—†์Œ

์˜ค๋ฆฌ์ง„ : https://localhost.com:80
๋„๋ฉ”์ธ : localhost.com

โ–ช๏ธ CSRF๊ฐ€ ์ž‘๋™ํ•˜๊ธฐ ์œ„ํ•œ ์กฐ๊ฑด 

โ‘  ์ฟ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•œ ๋กœ๊ทธ์ธ

 - ์œ ์ €๊ฐ€ ๋กœ๊ทธ์ธ ํ–ˆ์„ ๋•Œ ์ฟ ํ‚ค๋กœ ์–ด๋–ค ์œ ์ €์ธ์ง€ ์•Œ ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ

โ‘ก ์˜ˆ์ธกํ•  ์ˆ˜ ์žˆ๋Š” ์š”์ฒญ, ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผํ•จ

 - Request์— ํ•ด์ปค๊ฐ€ ๋ชจ๋ฅผ ์ˆ˜ ์žˆ๋Š” ์ •๋ณด๊ฐ€ ๋‹ด๊ฒจ์žˆ์œผ๋ฉด X


โ–ช๏ธ CSRF๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•ด์„œ๋Š”

โ‘  CSRF ํ† ํฐ ์‚ฌ์šฉ

 - ์„œ๋ฒ„์ธก์—์„œ CSRF ๊ณต๊ฒฉ์— ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•œ ํ† ํฐ ๋ฌธ์ž์—ด์„ ์œ ์ €์˜ ๋ธŒ๋ผ์šฐ์ €์™€ ์›น ์•ฑ์—๋งŒ ์ œ๊ณต

 - ์ด ์กฐํ•ฉ์œผ๋กœ๋งŒ ์ƒ์„ฑ๋œ ์š”์ฒญ์—๋งŒ ์„ฑ๊ณต์ ์œผ๋กœ ์š”์ฒญ ์ฒ˜๋ฆฌํ•ด์คŒ

โ‘ก Same - Site Cookie ์‚ฌ์šฉ

 - ๊ฐ™์€ ๋„๋ฉ”์ธ์—์„œ๋งŒ ์„ธ์…˜ / ์ฟ ํ‚ค ์‚ฌ์šฉ ๊ฐ€๋Šฅ

 - ๊ฐ™์€ ๋„๋ฉ”์ธ์—์„œ ์˜จ ์š”์ฒญ์ด ์•„๋‹ˆ๋ผ๋ฉด ๋ฐ›์•„์ฃผ์ง€ ์•Š์Œ


๐Ÿ‘‰๐Ÿป XSS

 - ํฌ๋กœ์Šค ์‚ฌ์ดํŠธ ์Šคํฌ๋ฆฝํŒ… : XSS ( Cross Site Scripting )

 - ๊ณต๊ฒฉ์ž๊ฐ€ ์ƒ๋Œ€๋ฐฉ์˜ ๋ธŒ๋ผ์šฐ์ €์— ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‹คํ–‰๋˜๋„๋ก ํ•˜์—ฌ

    ์‚ฌ์šฉ์ž์˜ ์„ธ์…˜์„ ๊ฐ€๋กœ์ฑ„๊ฑฐ๋‚˜ ์›น์‚ฌ์ดํŠธ ๋ณ€์กฐ, ์•…์˜์ ์ธ ์ฝ˜ํ…์ธ  ์‚ฝ์ž…, ํ”ผ์‹ฑ ๊ณต๊ฒฉ์„ ์ง„ํ–‰ํ•˜๋Š” ๊ฒƒ