์ƒˆ์†Œ์‹

Game/Bee-box

[Bee-box] XML/Xpath ์ธ์ ์…˜

  • -
๋ฐ˜์‘ํ˜•

์ด๋ฒˆ ํฌ์ŠคํŒ…์€ XML/Xpath์ธ์ ์…˜์ž…๋‹ˆ๋‹ค.

 

์‹ค์Šตํ•˜๋Š” ๋ชจ๋“  ๊ณต๊ฒฉ์€ ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•˜์‹œ๋ฉด ์•ˆ๋ฉ๋‹ˆ๋‹ค.

ํ—ˆ์šฉ๋ฐ›์ง€ ์•Š์€ ์„œ๋น„์Šค ๋Œ€์ƒ์— ํ•ดํ‚น์„ ์‹œ๋„ํ•˜๋Š” ํ–‰๋™์€ ๊ธˆ์ง€ํ•˜๋ฉฐ,

๋ชจ๋“  ๋ฒ•์  ์ฑ…์ž„์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ์žˆ๋Š” ๊ฒƒ์„ ๋ช…์‹ฌํ•ด์ฃผ์„ธ์š”.

 


XML?

 

XML์€ W3C์—์„œ ๊ฐœ๋ฐœ๋œ, ๋‹ค๋ฅธ ํŠน์ˆ˜ํ•œ ๋ชฉ์ ์„ ๊ฐ–๋Š” ๋งˆํฌ์—… ์–ธ์–ด๋ฅผ ๋งŒ๋“œ๋Š”๋ฐ ์‚ฌ์šฉํ•˜๋„๋ก ๊ถŒ์žฅํ•˜๋Š” ๋‹ค๋ชฉ์  ๋งˆํฌ์—… ์–ธ์–ด์ด๋‹ค. XML์€ SGML์˜ ๋‹จ์ˆœํ™”๋œ ๋ถ€๋ถ„์ง‘ํ•ฉ์œผ๋กœ, ๋‹ค๋ฅธ ๋งŽ์€ ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ์ˆ ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. (์œ„ํ‚ค๋ฐฑ๊ณผ)

 

 

* ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜์ด๋ฉฐ ๊ฐ„๊ฒฐํ•œ ๋ฐ์ดํ„ฐํ˜•์ด๋‹ค.

* ์›น์—์„œ ๋””์Šคํ”Œ๋ ˆ์ด ํ‘œ์ค€์„ HTML๋กœ ํ•œ๊ฒƒ์ฒ˜๋Ÿผ ๋ฐ์ดํ„ฐ์˜ ํ‘œ์ค€์œผ๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ๋…ธ๋ ฅ์ด ์žˆ์Œ.

* ๋งˆํฌ์—…์–ธ์–ด(HTML)๊ฐ€ ์•„๋‹ˆ๋ผ ๋งˆํฌ์—…์–ธ์–ด๋ฅผ ์ •์˜ํ•˜๊ธฐ ์œ„ํ•œ ์–ธ์–ด์ด๋‹ค.

* ์ž์‹ ์˜ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ํ•ฉํ•˜๊ฒŒ ์ž‘์„ฑ ๊ฐ€๋Šฅ ํ•˜๋‹ค. 

 

์•„๋ž˜ ์ฃผ์†Œ์— ์„ค๋ช…์ด ๋งค์šฐ ์ž˜๋˜์–ด์žˆ์œผ๋‹ˆ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”. 

mommoo.tistory.com/17

 

์•„๋ž˜ ์ฐธ๊ณ  โ–ผ

๋”๋ณด๊ธฐ

XML์€  ๋ฐ์ดํ„ฐ๋ฅผ ํŠธ๋ฆฌ ๊ตฌ์กฐ์˜ ๋…ธ๋“œ๋กœ ํ‘œํ˜„ํ•˜๋ฉฐ ์‚ฌ์šฉ์ž ์ •์˜๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„๋ฅ˜ํ•œ๋‹ค.

๋‹ค์Œ ์˜ˆ์‹œ์—์„œ ์ตœ์ƒ์œ„ ๋…ธ๋“œ๋Š” 'movies'๊ณ  ํ•˜์œ„ ๋…ธ๋“œ๋Š” 'action'์ด๋‹ค. 

action์˜ ํ•˜์œ„๋…ธ๋“œ์—๋Š” 'id', 'name'์ด ์žˆ๋‹ค.


<?xml version="1.0" encoding="UTF-8"?>

<movies>

      <action>

          <id>1</id>

          <name>haeun</name>

      </action>


์ด๋ ‡๊ฒŒ XML๋กœ ์‚ฌ์šฉ์ž๋Š” ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ํŽธ์˜์— ๋งž๊ฒŒ ๋ถ„๋ฅ˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

Xpath๋Š” ์ผ์ข…์˜ ์ฟผ๋ฆฌ๋กœ, XML ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด์šฉ์„ ์„ ํƒํ•˜๊ณ  ์กฐ์ž‘ํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค.

XML์€ ํŠธ๋ฆฌ ๊ตฌ์กฐ๋กœ ์ •์˜๋˜์–ด ์žˆ์–ด์„œ ๋‹ค์Œ ์˜ˆ์‹œ์ฒ˜๋Ÿผ,

'/' ๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ตœ์ƒ์œ„ ๋…ธ๋“œ๋ถ€ํ„ฐ ์งˆ์˜ํ•  ๊ณณ์„ ์ง€์ •ํ•œ๋‹ค.

์ด์™ธ์—๋„ Xpath์— ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์–ด๋Š” ๋‹ค์–‘ํ•˜๋‹ค.


$result = $xml->Xpath ("/movies/action[id='".$id."'and name='".$name."']");


XML๊ณผ Xpath์ธ์ ์…˜์€ XML๊ตฌ์กฐ์— ์•…์˜์ ์ธ ํ–‰์œ„๋ฅผ ์ผ์œผํ‚ค๋Š” ๋‚ด์šฉ์„ ์‚ฝ์ž…ํ•˜๊ฑฐ๋‚˜,

Xpath๋ฅผ ์กฐ์ž‘ํ•˜์—ฌ XML์˜ ๋‚ด์šฉ์„ ๋…ธ์ถœํ•˜๋Š” ์ทจ์•ฝ์ ์ด๋‹ค.

 

 

๊ณต๊ฒฉ๊ฐœ์š”๋„๋Š” SQL์ธ์ ์…˜๊ณผ ๋งค์šฐ ๋น„์Šทํ•˜์ง€๋งŒ,

xpath๋ฅผ ์กฐ์ž‘ํ•˜์—ฌ xml์˜ ๋‚ด์šฉ์„ ๋…ธ์ถœํ•œ๋‹ค๋Š” ์ ์—์„œ ์กฐ๊ธˆ ๋‹ค๋ฅด๋‹ค.

 


 

๋‚œ์ด๋„ ํ•˜

 

 

Login Form ์‹ค์Šต ์‹œ์ž‘.

 

 

 

์ด ํŽ˜์ด์ง€๋Š” superhero ๊ทธ๋ฃน์˜ ์‚ฌ์šฉ์ž๋กœ ๋กœ๊ทธ์ธํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. 

superhero ๊ทธ๋ฃน์˜ ์‚ฌ์šฉ์ž ๊ณ„์ • ์ •๋ณด๋Š” XML ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ €์žฅ๋œ๋‹ค.

 

(mm.sookmyung.ac.kr/~sblim/lec/xml02/xml2-12a.htm -> xmlDB์•Œ์•„๋ณด๊ธฐ)

 

 

์ธ์ ์…˜์ด ๊ฐ€๋Šฅํ•œ์ง€ ํ™•์ธํ•ด๋ณด๋ ค๊ณ  '(์ž‘์€๋”ฐ์˜ดํ‘œ)๋ฅผ ์ž…๋ ฅํ–ˆ๋”๋‹ˆ,

์œ„์™€ ๊ฐ™์ด ์ƒ๋‹จ์— ๊ฒฝ๊ณ  ํ‘œ์‹œ์™€ ํ•จ๊ป˜ ์˜ค๋ฅ˜ ๊ตฌ๋ฌธ์ด ์ถœ๋ ฅ๋˜์—ˆ๋‹ค.

 

์˜ค๋ฅ˜ ๋ฉ”์„ธ์ง€๋Š” xml ๊ด€๋ จ ๊ฒฝ๊ณ - - > xpath๊ด€๋ จ ์˜ค๋ฅ˜์ด๋‹ค.

 

 

xml์€ ๋…ธ๋“œ๋“ค๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๊ณ , Xpath๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.

 

Xpath์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์–ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. 

์Šฌ๋ž˜์‹œ์™€ ๋…ธ๋“œ๋ช…์„ ์ž…๋ ฅํ•˜๋ฉด (ex: /haeun) ํ•ด๋‹น ๋…ธ๋“œ์˜ ๋‚ด์šฉ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

ํ˜„์žฌ ํŽ˜์ด์ง€๋Š” ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€ ์ด๋ฏ€๋กœ, ์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ and์—ฐ์‚ฐ์œผ๋กœ ํ˜ธ์ถœํ•œ๋‹ค๊ณ  ์ถ”์ธกํ•  ์ˆ˜ ์žˆ๋‹ค.

AND์—ฐ์‚ฐ์€ OR์—ฐ์‚ฐ๋ณด๋‹ค ์šฐ์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•ญ์ƒ or์—ฐ์‚ฐ๊ณผ ํ•จ๊ป˜ ์ฐธ์ด ๋˜๋Š” ์ปค๋ฆฌ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด and์—ฐ์‚ฐ ๊ฒฐ๊ณผ์˜

์ƒ๊ด€ ์—†์ด ๊ฒฐ๊ณผ๋Š” ์ฐธ์ด ๋œ๋‹ค.

 

1 and 1 == ์ฐธ or ์ฐธ ==๊ฒฐ๋ก  --> ์ฐธ
1 and 2 == ๊ฑฐ์ง“ or ์ฐธ == ๊ฒฐ๋ก  --> ์ฐธ

 

 

 

'or 1=1 or ' ๋ฅผ id์— ์ž…๋ ฅํ•˜๋ฉด ๋กœ๊ทธ์ธ์— ์„ฑ๊ณตํ•œ๋‹ค.

(pw๋Š” ์•„๋ฌด๊ฑฐ๋‚˜ ๋„ฃ์–ด๋„๋˜๊ณ  ์•ˆ๋„ฃ์–ด๋„ ์ƒ๊ด€x)

 

์ฆ‰ or 1=1์ด ์ฐธ ์ด๋ฏ€๋กœ ์ด์–ด์ง€๋Š” or๋ฌธ๊ณผ ๋’ค์—์˜ค๋Š” ์–ด๋–ค ๊ฒƒ์ด ๊ฑฐ์ง“์ด๋“ , ์ฐธ์ด๋“  ์—ฌ๋ถ€์— ์ƒ๊ด€์—†์ด

์ด ์ฟผ๋ฆฌ๋Š” ์ฐธ์ด ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

 

neo ๋ผ๋Š” ์‚ฌ์šฉ์ž ์ด์™ธ์—๋„ heroes ํ…Œ์ด๋ธ”์— ์ €์žฅ๋œ ์‚ฌ์šฉ์ž๋กœ ๋กœ๊ทธ์ธ ํ•  ์ˆ˜๊ฐ€ ์žˆ๋‹ค.

 

๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๋กœ ๋กœ๊ทธ์ธ ํ•ด๋ณด๊ธฐ ์œ„ํ•ด ๋‹ค์Œ ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด๋ณด์ž.

 

 

alice' or  'alice' = 'alice

 

 

alice๋กœ ๋กœ๊ทธ์ธ์ด ๋˜์—ˆ๋‹ค.

neo๋ฅผ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€๋กœ ์ ‘์†ํ•  ๋Œ€๋Š” or์—ฐ์‚ฐ์ž์— 1=1๋Œ€์‹  ๋ฌธ์ž๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

 

๋”๋ณด๊ธฐ

์ด์œ ๋Š” ์ œ์ผ ์ฒ˜์Œ์— ์žˆ๋Š” ๊ฐ’์ธ neo๋Š” ์ „์ฒด ์ฟผ๋ฆฌ๊ฐ€ ์ฐธ์ธ ์ฟผ๋ฆฌ๋ฅผ ๋‚ ๋ฆฌ๋ฉด

ํ•œ๊ฐœ์˜ ์ด๋ฆ„๋งŒ ์ถœ๋ ฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•ญ์ƒ ์œ„์— ์žˆ์–ด์„œ ๋‚˜์˜ค๋Š” ๊ฒƒ์ด๊ณ ,

 

๋‚˜๋จธ์ง€ ์ด๋ฆ„ ๊ฐ™์€ ๊ฒฝ์šฐ, ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ์ด๋ฆ„์„ ์ง€์ •ํ•ด์ฃผ์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. 

 

์•„๋ž˜๋Š” ์ฟผ๋ฆฌ๋ฅผ ๋‚ ๋ฆฐ ํ›„ url์ด๋‹ค.

 

 

์ด ์ฟผ๋ฆฌ๋ฌธ์ด ์ดํ•ด๊ฐ€ ์•ˆ๋  ์ˆ˜๋„ ์žˆ๋Š”๋ฐ ์•„๋ž˜์ฒ˜๋Ÿผ ์ƒ๊ฐํ•˜๋ฉด ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๋‹ค.

 


์›๋ž˜ DB์—๋Š” 

login= ' ' & pw= ' ' ....์ด๋Ÿฐ ํ˜•์‹์œผ๋กœ ์ €์žฅ์ด ๋˜์–ด์žˆ์„ ๊ฒƒ์ด๋‹ค.

' ' ์•ˆ์—๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ž…๋ ฅํ•˜๋Š” ๊ฐ’์ด ๋“ค์–ด๊ฐˆ ๊ฒƒ์ด๋‹ค.

 

๊ทธ๋Ÿผ ์œ„์™€ ๊ฐ™์€ ์ฟผ๋ฆฌ๋ฅผ ๋„ฃ์œผ๋ฉด ์–ด๋–ป๊ฒŒ ๊ฐ’์ด ๋“ค์–ด๊ฐˆ๊นŒ?

 

login='alice' or  'alice' = 'alice' & pw=....

 

ํŒŒ๋ž€์ƒ‰์€ ๊ธฐ๋ณธ ์ฟผ๋ฆฌ, ๋นจ๊ฐ„์ƒ‰์€ ๋‚ด๊ฐ€ ๋„ฃ๋Š” ๊ฐ’์ด๋‹ค.

 

login= alice๋ผ๋Š” ์• ๋กœ ํ• ๊ฑด๋ฐ or alice=alice ,

or ๋’ค ์ฟผ๋ฆฌ๋Š” ์ฐธ์ด๋‹ค. ์•จ๋ฆฌ์Šค๋Š” ์•จ๋ฆฌ์Šค ์ด๊ธฐ ๋•Œ๋ฌธ์—,

 

์ฆ‰ ์ด ๋ชจ๋“  ์ฟผ๋ฆฌ๋Š” ์ฐธ์ด๋˜์–ด, login์ด 'alice'๋กœ ๊ฐ€๋Šฅํ•ด์ง„๋‹ค.


 

๊ฒฐ๊ณผ์ ์œผ๋ก , alice๋กœ ๋กœ๊ทธ์ธ ํ•˜๋Š” ๊ฒƒ์„ ์„ฑ๊ณต.

xml์ธ์ ์…˜ ์„ฑ๊ณต.

 

์ด์–ด์ง€๋Š” ๊ธ€๋กœ xml blind sql์„ ์‹ค์Šตํ•ด๋ณด๊ฒ ๋‹ค.

๊ธ€์ด ๋„ˆ๋ฌด ๊ธธ์–ด์ง€๋Š” ๊ด€๊ณ„๋กœ ๋‹ค์Œ๊ธ€๋กœ ์ด์–ด๋‚˜๊ฐ€๊ฒ ๋‹ค.

 

๋ฐ˜์‘ํ˜•
Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.