[Bee-box] XML/Xpath ์ธ์ ์
- -
์ด๋ฒ ํฌ์คํ ์ XML/Xpath์ธ์ ์ ์ ๋๋ค.
์ค์ตํ๋ ๋ชจ๋ ๊ณต๊ฒฉ์ ์ค์ ๋ก ์ฌ์ฉํ์๋ฉด ์๋ฉ๋๋ค.
ํ์ฉ๋ฐ์ง ์์ ์๋น์ค ๋์์ ํดํน์ ์๋ํ๋ ํ๋์ ๊ธ์งํ๋ฉฐ,
๋ชจ๋ ๋ฒ์ ์ฑ ์์ ์ฌ์ฉ์์๊ฒ ์๋ ๊ฒ์ ๋ช ์ฌํด์ฃผ์ธ์.
XML?
XML์ W3C์์ ๊ฐ๋ฐ๋, ๋ค๋ฅธ ํน์ํ ๋ชฉ์ ์ ๊ฐ๋ ๋งํฌ์ ์ธ์ด๋ฅผ ๋ง๋๋๋ฐ ์ฌ์ฉํ๋๋ก ๊ถ์ฅํ๋ ๋ค๋ชฉ์ ๋งํฌ์ ์ธ์ด์ด๋ค. XML์ SGML์ ๋จ์ํ๋ ๋ถ๋ถ์งํฉ์ผ๋ก, ๋ค๋ฅธ ๋ง์ ์ข ๋ฅ์ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ์ ํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ค. (์ํค๋ฐฑ๊ณผ)
* ํ ์คํธ ๊ธฐ๋ฐ์ด๋ฉฐ ๊ฐ๊ฒฐํ ๋ฐ์ดํฐํ์ด๋ค.
* ์น์์ ๋์คํ๋ ์ด ํ์ค์ HTML๋ก ํ๊ฒ์ฒ๋ผ ๋ฐ์ดํฐ์ ํ์ค์ผ๋ก ๋ง๋ค๊ธฐ ์ํ ๋ ธ๋ ฅ์ด ์์.
* ๋งํฌ์ ์ธ์ด(HTML)๊ฐ ์๋๋ผ ๋งํฌ์ ์ธ์ด๋ฅผ ์ ์ํ๊ธฐ ์ํ ์ธ์ด์ด๋ค.
* ์์ ์ ์ดํ๋ฆฌ์ผ์ด์ ์ ์ ํฉํ๊ฒ ์์ฑ ๊ฐ๋ฅ ํ๋ค.
์๋ ์ฃผ์์ ์ค๋ช ์ด ๋งค์ฐ ์๋์ด์์ผ๋ ์ฐธ๊ณ ํด์ฃผ์ธ์.
์๋ ์ฐธ๊ณ โผ
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์ ์ค์ตํด๋ณด๊ฒ ๋ค.
๊ธ์ด ๋๋ฌด ๊ธธ์ด์ง๋ ๊ด๊ณ๋ก ๋ค์๊ธ๋ก ์ด์ด๋๊ฐ๊ฒ ๋ค.
'Game > Bee-box' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Bee-box] XML/Xpath ์ธ์ ์ -Search (0) | 2020.09.19 |
---|---|
[Bee-box] XML/Xpath ์ธ์ ์ -2 (0) | 2020.09.19 |
[Bee-box] Blind SQL ์ธ์ ์ - ์น ์๋น์ค/SOAP (0) | 2020.08.25 |
[Bee-box] Blind SQL ์ธ์ ์ - Time Based (0) | 2020.08.24 |
์์คํ ๊ณต๊ฐ ๊ฐ์ฌํฉ๋๋ค