CSRF - hyunwoo-e/Spring GitHub Wiki

CSRF

CSRF(Cross site request forgery, ์‚ฌ์ดํŠธ๊ฐ„ ์š”์ฒญ ์œ„์กฐ)๋ž€ ์›น ์‚ฌ์ดํŠธ์˜ ์ทจ์•ฝ์ ์„ ์ด์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ์˜๋„ํ•˜์ง€ ์•Š๋Š” ์š”์ฒญ์„ ์†ก์‹ ํ•˜๋„๋ก ํ•˜๋Š” ๊ณต๊ฒฉ์„ ์˜๋ฏธ.

๊ณต๊ฒฉ๋ฐฉ๋ฒ•

CSRF๊ณต๊ฒฉ๋ฐฉ๋ฒ•์—๋Š” ์ •ํ˜•ํ™”๋œ ์ˆ˜๋ฒ•์ด ์žˆ๋‹ค๊ธฐ ๋ณด๋‹ค๋Š” ์›น์— ์š”์ฒญ์„ ๋ณด๋‚ผ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๋ฐฉ๋ฒ•์ด ๊ณต๊ฒฉ๋ฐฉ๋ฒ•์ด ๋œ๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. javascript์™€ ajax๋ฅผ ์ด์šฉํ•œ ๋ฐฉ๋ฒ•, ์ „ํ†ต์ ์ธ form๋ฐฉ๋ฒ•, imgํƒœ๊ทธ๋ฅผ ์ด์šฉํ•œ ๋ฐฉ๋ฒ• ๋“ฑ๋“ฑ ์š”์ฒญ์„ ๋ณด๋‚ผ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด๋ผ๋ฉด ๊ทธ ์–ด๋–ค ๊ฒƒ์ด๋ผ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

CSRF ๊ณต๊ฒฉ์˜ ์‚ฌ๋ก€์ž…๋‹ˆ๋‹ค

  1. ์‚ฌ์šฉ์ž๊ฐ€ ํผ ์ธ์ฆ์„ ํ†ตํ•ด์„œ www.example.com์— ๋กœ๊ทธ์ธ
  2. ์„œ๋ฒ„๊ฐ€ ์‚ฌ์šฉ์ž๋ฅผ ์ธ์ฆํ•ฉ๋‹ˆ๋‹ค. ์ด ๋•Œ, ์„œ๋ฒ„์—์„œ ๋ฐ˜ํ™˜๋œ ์‘๋‹ต์—๋Š” ์ธ์ฆ ์ฟ ํ‚ค ํฌํ•จ
  3. ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์•„์›ƒํ•˜์ง€ ์•Š์€ ์ƒํƒœ์—์„œ ์•…์˜์ ์ธ ์‚ฌ์ดํŠธ๋ฅผ ๋ฐฉ๋ฌธ
<h1>You Are a Winner!</h1>
<form action="http://example.com/api/account" method="post">
    <input type="hidden" name="Transaction" value="withdraw" />
    <input type="hidden" name="Amount" value="1000000" />
    <input type="submit" value="Click Me"/>
</form>
  1. ์‚ฌ์šฉ์ž๊ฐ€ "submit" ๋ฒ„ํŠผ์„ ํด๋ฆญ, ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์š”์ฒญ์— ์ธ์ฆ ์ฟ ํ‚ค๋ฅผ ํ•จ๊ป˜ ํฌํ•จ์‹œ์ผœ์„œ ์ „์†ก
  2. ์š”์ฒญ์€ ์„œ๋ฒ„์—์„œ ์‚ฌ์šฉ์ž์˜ ์ธ์ฆ ์ปจํ…์ŠคํŠธ๋กœ ์‹คํ–‰, ์ธ์ฆ๋œ ์‚ฌ์šฉ์ž๊ฐ€ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Œ

Solution

์ผ๋ฐ˜์ ์œผ๋กœ ๊ฐ€์žฅ ๋„๋ฆฌ ์ด์šฉ๋˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” Synchronizer token pattern(๋™๊ธฐํ™”๋œ ํ† ํฐ ํŒจํ„ด)์ด ์žˆ๋‹ค. ์ด ํŒจํ„ด์€ ์„œ๋ฒ„ ์‚ฌ์ด๋“œ(์„ธ์…˜ ์Šค์ฝ”ํ”„ ๋“ฑ)์— ๋ณด๊ด€๋œ ํ† ํฐ์„ CSRF๋ฐฉ์–ด๊ฐ€ ํ•„์š”ํ•œ ์š”์ฒญ๋งˆ๋‹ค ํฌํ•จ(์š”์ฒญํ•  form์— hiddenํ•„๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ ํ† ํฐ์„ ์ถ”๊ฐ€)์‹œ์ผœ์„œ ์š”์ฒญํ•˜๊ณ  ์„œ๋ฒ„์—์„œ ๋น„๊ตํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ CSRF๋ฅผ ๋ฐฉ์–ดํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ฐฉ์–ดํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋„๋ฆฌ ์‚ฌ์šฉ๋œ๋‹ค.

์ฐธ๊ณ 

http://reiphiel.tistory.com/entry/cross-site-request-forgery

http://www.egocube.pe.kr/Translation/Content/asp-net-web-api/201402030001

โš ๏ธ **GitHub.com Fallback** โš ๏ธ