ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๊ฐœ์š”

"Cross Site Request Forgery" ์˜ ์•ฝ์ž๋กœ XSS์˜ ์ทจ์•ฝ์ ๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ๊ฐ’ ๊ฒ€์ฆ ๋ฐ ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ ์‹œ ์„ธ์…˜ ์ฟ ํ‚ค, ์ถœ๋ฐœ์ง€ ์ฃผ์†Œ ๋“ฑ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์š”์ฒญ๋œ ๊ฒƒ์ธ์ง€ ๊ฒ€์ฆ์„ ํ•˜์ง€ ์•Š์•„ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๊ณต๊ฒฉ ๋ฐฉ์‹์€ XSS์™€ ์œ ์‚ฌํ•˜๊ฒŒ Reflect ๋ฐฉ์‹๊ณผ Stored ๋ชจ๋‘ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

Reflect ๊ธฐ๋ฐ˜์ด๋ผ๋ฉด ๋ณดํ†ต ์ด๋ฏธ์ง€ ํƒœ๊ทธ(img, iframe, embed src)์™€ ๋งํฌ ํƒœ๊ทธ(a href)๋ฅผ ์‚ฌ์šฉํ•ด ์ด๋ฏธ์ง€์— ๋งํฌ๋ฅผ ์‚ฝ์ž…ํ•˜๋Š” ๋“ฑ GET ๋ฐฉ์‹์˜ ์•…์„ฑ๋ฉ”์ผ ํ˜•ํƒœ๋กœ ์ „์†กํ•˜๊ฒŒ ๋  ๊ฒƒ์ด๋ฉฐ, Store ๋ฐฉ์‹๋„ iframe์ด๋‚˜ script ํƒœ๊ทธ๋ฅผ ์ด์šฉํ•ด ์ฝ”๋“œ๋ฅผ ์‚ฝ์ž…ํ•ด๋‘˜ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
*Post ๋ฐฉ์‹์ผ ๊ฒฝ์šฐ "Form"์„ ์ด์šฉํ•˜์—ฌ ์‚ฌ์ดํŠธ๋ฅผ ์ด์šฉํ•˜๋Š” ๋ถˆํŠน์ • ๋‹ค์ˆ˜๋ฅผ ๋Œ€์ƒ์œผ๋กœ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ณต๊ฒฉ์ž๋Š” ๋ณ€์กฐ๋œ HTTP ์š”์ฒญ์„ ์‚ฝ์ž…, ์ „์†กํ•˜๊ฒŒ ๋จ์œผ๋กœ์จ ํด๋ฆญํ•œ ํ”ผํ•ด์ž๊ฐ€ ์ž์‹ ์˜ ์ธ์ฆ๋œ ๊ณ„์ •์œผ๋กœ ์„œ๋ฒ„์— ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๋งŒ์•ฝ ํ”ผํ•ด์ž๊ฐ€ ๋†’์€ ๊ถŒํ•œ์ด ๋ถ€์—ฌ๋œ ๊ณ„์ • ์ƒํƒœ๋ผ๋ฉด ๋”์šฑ ๋ฌด์–ธ๊ฐ€๋ฅผ ์‚ญ์ œ, ์ˆ˜์ •ํ•˜๊ธฐ์—” ์‰ฌ์›Œ์ง‘๋‹ˆ๋‹ค.

 

XSS์™€ ๋‹ค๋ฅธ ์ 
(1) Javascript ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ํ™˜๊ฒฝ์—์„œ๋„ ๊ณต๊ฒฉ ๊ฐ€๋Šฅ
(2) Server ์ธก์„ ํƒ€๊ฒŸ์œผ๋กœ ์š”์ฒญ(XSS๋Š” ํด๋ผ์ด์–ธํŠธ์—์„œ ๊ณต๊ฒฉ์ด ์ด๋ฃจ์–ด์ง)
(3) CSRF๋Š” ๊ณต๊ฒฉ์ž๊ฐ€ ์›ํ•˜๋Š” ์š”์ฒญ์„ ํฌ์ƒ์ž์˜ ๊ถŒํ•œ์œผ๋กœ ์ •์ƒ์ ์ธ ์š”์ฒญ์ธ ๊ฒƒ์ฒ˜๋Ÿผ ์‹คํ–‰
์ทจ์•ฝํ•œ ํ™˜๊ฒฝ
(1) Referer ํ—ค๋”์˜ ๋ถ€์ œ ๋ฐ ๊ฒ€์ฆ ๋ฏธํก
(2) CSRF ํ† ํฐ์˜ ๋ถ€์ œ
(3) ํ–‰์œ„์— ๋Œ€ํ•œ Captcha ์ธ์ฆ ๋ถ€์ œ
(4) ์ž…๋ ฅ๊ฐ’์„ ๊ฒ€์ฆํ•˜์ง€ ์•Š๋Š” HTML ํผ

CSRF ๊ณต๊ฒฉ์„ ์„ฑ๊ณตํ•˜๊ธฐ ์œ„ํ•ด์„  ์•„๋ž˜์˜ 2๊ฐ€์ง€ ์กฐ๊ฑด์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์ „์ œํ•˜์— ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค.
์ฒซ์งธ๋กœ ๊ณต๊ฒฉ์ž๊ฐ€ ์›ํ•˜๋Š” ํ–‰์œ„๊ฐ€ ๋กœ๊ทธ์ธ์„ ์ˆ˜ํ–‰ ํ›„ ์ง„ํ–‰๋˜๋Š” ๊ฒƒ์ด๋ผ๋ฉด ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํฌ์ƒ์ž๋„ ๋กœ๊ทธ์ธ์„ ํ•ด๋‘” ์ƒํƒœ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์™œ๋ƒํ•˜๋ฉด ์ด๋ฏธ ์ธ์ฆ๋œ ๋กœ๊ทธ์ธ ๊ณ„์ •์œผ๋กœ ์œ ํšจํ•œ HTTP ์š”์ฒญ์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„ ์ธก์—์„œ๋Š” ์˜ฌ๋ฐ”๋ฅธ ํ–‰์œ„๋ผ๊ณ  ํŒ๋‹จ

* ํ•˜์ง€๋งŒ ๋žœ๋ค ํ•œ ๋ณด์•ˆํ† ํฐ์ด ์กด์žฌํ•  ๊ฒฝ์šฐ ์ƒํ˜ธ ๊ฐ„์— ๊ฐ’์ด ํ‹€๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ์˜ฌ๋ฐ”๋ฅธ ์‹ ์›์ด ์•„๋‹ˆ๋ผ๊ณ  ํŒ๋‹จ

 

์œ„์ฒ˜๋Ÿผ ๋ช‡๋ช‡ ์‚ฌ์šฉ์ž๋“ค์€ ์žฌ๋กœ๊ทธ์ธ์„ ๊ท€์ฐฎ์•„ํ•˜๊ธฐ์— ์ด๋ฏธ ์ธ์ฆ๋œ ์‚ฌ์ดํŠธ๋Š” ๋‹ซ์ง€ ์•Š๊ณ  ๊ณ„์† ์œ ์ง€์‹œ์ผœ๋‘๋Š” ๋ถ„๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์—ฌ๋Ÿฌ ์‚ฌ์ดํŠธ์— ๋ฌด์ฐจ๋ณ„์ ์œผ๋กœ ์‹ ์›์ด ์ธ์ฆ๋œ ์ƒํƒœ์—์„œ๋Š” CSRF ๊ณต๊ฒฉ์— ์‰ฝ๊ฒŒ ๋…ธ์ถœ๋ฉ๋‹ˆ๋‹ค.
*๊ด€๋ฆฌ์ž ํŽ˜์ด์ง€์˜ ๊ฒฝ์šฐ ๋ฐ˜๋“œ์‹œ "์„ธ์…˜ ํƒ€์ž„"์„ ์ง€์ •ํ•˜์—ฌ ํŠน์ • ํ–‰์œ„๊ฐ€ ์—†์„ ์‹œ ์ž๋™์œผ๋กœ ๋กœ๊ทธ์ธ์€ ๋Š์„ ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •ํ•ด์•ผ ๋จ

๋‘ ๋ฒˆ์งธ๋กœ ๋Œ€์ƒ ํŽ˜์ด์ง€ ๋‚ด์—์„œ ๋ถˆ๋ถ„๋ช…ํ•œ ์ฃผ์†Œ๋กœ๋ถ€ํ„ฐ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•ด์•ผ ๋ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๊ฑด ์•„๋ž˜์— ์„ค๋ช…ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

๋Œ€์ƒ ์„œ๋น„์Šค์˜ crossdomain.xml์„ ๋ณด์‹œ๋ฉด ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•ด ๋‹ค๋ฅธ ๋„๋ฉ”์ธ๋“ค์˜ ์ ‘๊ทผ์„ ๋ชจ๋‘ ํ—ˆ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ์ ‘๊ทผ์ด ๋ฏธํกํ•  ๊ฒฝ์šฐ XSS๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž ์ธ์ฆ์„ ํƒˆ์ทจํ•˜๊ฑฐ๋‚˜ CSRF ๊ฐ™์€ ๊ณต๊ฒฉ์— ๋…ธ์ถœ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค.

 

๋‘ ๋ฒˆ์งธ๋กœ๋Š” Referer ํ—ค๋”์˜ ๋ถ€์žฌ์ž…๋‹ˆ๋‹ค. ๋Œ€์ƒ ์„œ๋น„์Šค๋ฅผ ์›น ํ”„๋ก์‹œ ๋„๊ตฌ๋ฅผ ํ†ตํ•ด http ์‘๋‹ต ํ—ค๋”๋ฅผ ํ™•์ธํ•ด๋ณด๋ฉด ์ง€์ •ํ•ด๋‘” Referer ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํŠน์ • ํ–‰์œ„๊ฐ€ ์–ด๋Š ์ฃผ์†Œ์— ์‹œ์ž‘๋œ ๊ฒƒ์ธ์ง€ ๊ฒ€์ฆํ•  ์ˆ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

 

ํŒจ์Šค์›Œ๋“œ ๋ณ€๊ฒฝ์‹œ ์‚ฌ์šฉ๋˜๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ํŒŒ์•…ํ•˜๊ธฐ ์œ„ํ•ด ์ •์  ๋ถ„์„์„ ์ˆ˜ํ–‰ํ•  ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณต๊ฒฉ์ž๋Š” ๋‹ค์ˆ˜์˜ ์‚ฌ์šฉ์ž๋“ค์˜ ํŒจ์Šค์›Œ๋“œ๋ฅผ ๋ณ€๊ฒฝ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ๋กœ๊ทธ์ธ ์‹œ ๋„˜์–ด๊ฐ€๋Š” ํ•˜์œ„ ๋„๋ฉ”์ธ ์ฃผ์†Œ๋ฅผ ํŒŒ์•…ํ•ด๋‘ก๋‹ˆ๋‹ค.

 

ํŒจ์Šค์›Œ๋“œ ๋ณ€๊ฒฝ ์‹œ ์‚ฌ์šฉ๋˜๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์›น ํ”„๋ก์‹œ ๋„๊ตฌ๋ฅผ ํ†ตํ•ด ํ™•์ธํ–ˆ์ง€๋งŒ body ์˜์—ญ์— ๋…ธ์ถœ๋˜๋Š” ๊ฒƒ์„ ์ œํ•œํ•ด๋‘” ์ƒํƒœ๋ผ์„œ ํ™•์ธ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ํ•ด๋‹น ํŽ˜์ด์ง€์˜ ์†Œ์Šค๋ฅผ ๋ถ„์„ํ•˜๋‹ค ๋ณด๋ฉด ๊ฒฐ๊ตญ ์–ด๋–ค ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด ๊ฐ’์„ ์ „๋‹ฌํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

 

ํ•„์š”ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ชจ๋‘ ์ˆ˜์ง‘ํ•˜๊ณ  ๊ณต๊ฒฉ์ž๋Š” ์ด๋ฏธ์ง€ ์•ˆ์— ๊ณต๊ฒฉ์ž๊ฐ€ ์›ํ•˜๋Š” ํŒจ์Šค์›Œ๋“œ๋กœ ๊ฐ•์ œ ๋ณ€๊ฒฝ๋˜๋„๋ก ์ฝ”๋“œ๋ฅผ ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์‚ฌ์šฉ์ž๊ฐ€ ์ด๋Ÿฌํ•œ ์ด๋ฏธ์ง€๋ฅผ ํด๋ฆญํ•˜๊ฒŒ ๋  ๊ฒฝ์šฐ ๋งํฌ ํƒœ๊ทธ(a href)์— ์„ ์–ธ๋œ ํ–‰์œ„๊ฐ€ ์‚ฌ์šฉ์ž์˜ ๊ถŒํ•œ์œผ๋กœ ์š”์ฒญํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„ ์ธก์—์„œ๋Š” ์•…์˜์ ์ธ ํ–‰์œ„์ธ์ง€ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ํŒจ์Šค์›Œ๋“œ ๋ณ€๊ฒฝ ์‹œ CSRF ํ–‰์œ„๋ฅผ ๋ง‰์„ ์ˆ˜ ์žˆ๋Š” "๊ธฐ์กด์˜ ํŒจ์Šค์›Œ๋“œ๋ฅผ ์žฌ์ž…๋ ฅ" ํ•˜๋Š” ๋ฃจํ‹ด์ด ์กด์žฌํ•œ๋‹ค ํ•˜๋”๋ผ๋„ "LIKE" ์—ฐ์‚ฐ์ž์ธ %๋ฅผ ๊ฒ€์ฆํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์ด ๋˜ํ•œ ์‰ฝ๊ฒŒ ์šฐํšŒ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

 

์‚ฌ์ง„์„ ๋ณด์‹œ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ด๋ฏธ์ง€๋ฅผ ํด๋ฆญํ•œ ์‚ฌ์šฉ์ž์˜ ํŒจ์Šค์›Œ๋“œ๊ฐ€ ์‰ฝ๊ฒŒ ๋ณ€๊ฒฝ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์‚ฌ์šฉ์ž๋“ค์ด ํŒจ์Šค์›Œ๋“œ๊ฐ€ ๋ณ€๊ฒฝ๋œ๊ฒƒ์„ ๋ˆˆ์น˜์ฑ„์ง€ ์•Š๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด META ํƒœ๊ทธ ์ค‘ "Refresh"๋ฅผ ์ถ”๊ฐ€์ ์œผ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ์ •์ƒ ํŽ˜์ด์ง€๋กœ ๋ฐ”๋กœ ๋Œ๋ฆฐ๋‹ค๋ฉด ์‰ฝ๊ฒŒ ๋ˆˆ์น˜์ฑ„๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.


๋Œ€ํ‘œ์ ์œผ๋กœ ๊ณผ๊ฑฐ "์˜ฅ์…˜"์—์„œ ๋ฐœ์ƒํ•œ ์•ฝ 1800๋งŒ ๋ช…์˜ ๊ฐœ์ธ์ •๋ณด ์œ ์ถœ ์‚ฌ๊ฑด์—์„œ ๊ณต๊ฒฉ๋œ ๊ธฐ๋ฒ• ์ค‘ ํ•˜๋‚˜๋กœ ํ•ด๋‹น "CSRF" ์ทจ์•ฝ์ ์„ ์‚ฌ์šฉํ•ด ๋†’์€ ๊ถŒํ•œ์„ ๊ฐ€์ง„ ๊ณ„์ •๋“ค์—๊ฒŒ ์ฝ”๋“œ๊ฐ€ ์‚ฝ์ž…๋œ ์ด๋ฉ”์ผ์„ ์‚ฌํšŒ๊ณตํ•™์  ๊ธฐ๋ฒ•๊ณผ ์œตํ•ฉํ•˜์—ฌ ํš๋“ํ–ˆ์—ˆ๋˜ ์‚ฌ๊ฑด์ž…๋‹ˆ๋‹ค.

 

์œ„์ฒ˜๋Ÿผ ํŒจ์Šค์›Œ๋“œ๋ฅผ ์ˆ˜์ •์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•๋„ ์กด์žฌํ•˜์ง€๋งŒ ์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ• ์ด์™ธ์—๋„

(1) ๋ฌด์ž‘์œ„ ๊ฒŒ์‹œ๊ธ€, ๋Œ“๊ธ€ ์ž‘์„ฑ 
(2) ์ƒํ’ˆ ์ฃผ๋ฌธ ๋ฐ ๊ฒฐ์ œ๊นŒ์ง€ ์—ฐ๊ณ„
(3) ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋ฐ ์œ„์‹œ๋ฆฌ์ŠคํŠธ ์ถ”๊ฐ€, ์‚ญ์ œ 
๋“ฑ

ํŠน์ • ํ–‰์œ„์— ๋Œ€ํ•œ ๋ชจ๋“  ๊ฒƒ๋“ค์ด ๊ฐ€๋Šฅํ•ด์งˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์ดํŠธ๋ฅผ ์šด์˜ํ•˜๋Š” ๊ฐœ๋ฐœ์ž ๋ถ„๋“ค์ด๋ผ๋ฉด ๋ฐ˜๋“œ์‹œ ์—ฌ๋Ÿฌ ์ธก๋ฉด์„ ๊ณ ๋ คํ•˜๋ฉด์„œ ๊ตฌํ˜„ ๊ฐœ๋ฐœ์„ ํ•ด์•ผ ๋ฉ๋‹ˆ๋‹ค.

๋Œ€์‘ ๋ฐฉ์•ˆ

CSRF ์ทจ์•ฝ์ ์€ ๊ฐœ๊ฐœ์ธ์˜ ์•ˆ์ „ํ•œ ์ธ์ฆ์ฒด๊ณ„๋ฅผ ๊ฑฐ์นœ๋‹ค๊ณ  ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ง‰์„ ์ˆ˜ ์žˆ๋Š” ์ทจ์•ฝ์ ์ด ์•„๋‹™๋‹ˆ๋‹ค.

์–ด๋Š ์ •๋„ ์‚ฌํšŒ ๊ณต์žฅ ํ•™์ ์ธ ๊ธฐ๋ฒ•๋„ ์‚ฌ์šฉ๋˜๊ณ  ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณต๊ฒฉ๊ณผ๋„ ์—ฐ๊ด€์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž์˜ ํ–‰์œ„์— ๋Œ€ํ•œ ์žฌ๊ฒ€์ฆ์„ ํ•˜๋Š” ๊ฒƒ์€ ๋ฌผ๋ก ์ด๊ฑฐ๋‹ˆ์™€ XSS, SQL ์ธ์ ์…˜๊ณผ ๊ฐ™์€ ์ž…๋ ฅ ๊ฐ’ ๊ฒ€์ฆ์„ ํ•„์ˆ˜์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•ด์•ผ ๋ฉ๋‹ˆ๋‹ค.

POST๊ธฐ๋ฐ˜ Referer ํ—ค๋” ๊ฒ€์ฆ
 <!--๋™์ผ ์‚ฌ์ดํŠธ์—์„œ ์˜จ ์ฃผ์†Œ๋งŒ ํ—ˆ์šฉํ•˜๊ณ  ๊ทธ์™ธ์—๋Š” ์ด์ „ํŽ˜์ด์ง€๋กœ ๋Œ๋ฆฌ๊ธฐ-->
 &hhtp_host= getenv("HTTP_HOST");
 $referer     = getenv("HTTP_REFERER);
     if(!eregi ($http_host, $referer)) || $referer != "http://์ฃผ์†Œ")
 {
	echo"<script>alert(\"์ ‘๊ทผ์ด ์ž˜๋ชป๋˜์—ˆ์Šต๋‹ˆ๋‹ค.\"); history-go(-1)</script>";
     exit();
๋žœ๋คํ•œ ๋ณด์•ˆ ํ† ํฐ ์ƒ์„ฑ
1.<!--ํ–‰์œ„๊ฐ€ ์ด๋ฃจ์–ด์ง€๋Š” ํŽ˜์ด์ง€์— ๋ณด์•ˆ ํ† ํฐ ์ฝ”๋“œ ์ถ”๊ฐ€-->
<?
session_start();
$tokn=md5(uniqid(rand(),true));
$_SESSION['tokn']=$tokn;
...
?>
<form action='action.php' method='post'>
<input type=hidden name=toknvalue='<? echo $tokn?>'>

2.<!--๋ณด์•ˆ ํ† ํฐ์ด POST ๋กœ ๋„˜์–ด์˜ค๋„๋ก ๊ตฌ์„ฑ-->
<?
session_start();
if(isset($_SESSION['tokn'])&&$_POST['tokn']==$_SESSION['tokn']){
....์ •์ƒ๋ฃจํ‹ด์ˆ˜ํ–‰....
}else echo "ํ† ํฐ ๊ฐ’ ์˜ค๋ฅ˜";
?>
์‚ฌ์šฉ์ž๋“ค์ด ์ž…๋ ฅํ•˜๋Š” HTML ํผ์„ ๋น„ํ™œ์„ฑ ๋˜๋Š” ์ž…๋ ฅ๊ฐ’ ๊ฒ€์ฆ
<!--๋ฐœ๊ฒฌ๋œ ๋ฌธ์ž๋ฅผ ์ง€์ •ํ•œ ๋ฌธ์ž๋กœ ๋ณ€ํ™˜-->
If($name=$_GET[‘ name’ ])
    $name=str_replace(“<”, “it,”, $name);
    $name=str_replace(“>”,”gt;”, $name);
    $name=str_replace(“=”,”equals;”, $name);
    $name=str_replace(“/”,”sol;”, $name);
    $name=str_replace(“;”,”semi;”, $name);
    $name=str_replace(“"”,”quot;”, $name);
    $name=str_replace(“+”,”plus;”, $name);
    Echo $name;
Crossdomain ์ ‘๊ทผ ์„ค์ •
 <!--ํ—ˆ์šฉํ•˜๋Š” ๋„๋ฉ”์ธ ๋˜๋Š” IP๋งŒ ์ ‘๊ทผํ•˜๋„๋ก ์„ค์ •-->
 <?xml version="1.0"?>
 <cross-domain-policy>
    <allow-access-from domain="*์ฃผ์†Œ์ž…๋ ฅ.com" />
    <allow-access-from domain="www.์ฃผ์†Œ์ž…๋ ฅ.com" />
    <allow-access-from domain="IP์ž…๋ ฅ" />
 </cross-domain-policy>
๊ณต์œ ํ•˜๊ธฐ ๋งํฌ
Comment