目录
4.7 DOM型XSS攻击
DOM型XSS攻击页面实现的功能是在“输入”框中输入信息,单击“替换”按钮时,页面会将“这里会显示输入的内容”替换为输入的信息,例如当输入“11”的时候,页面将“这里会显示输入的内容”替换为“11”,如图75和图76所示。
当输入<img src=1 οnerrοr=“alert(/xss/)”/>时,单击“替换”按钮,页面弹出消息框,如图77所示。
从HTML源码中可以看到,存在JS函数tihuan(),该函数的作用是通过DOM操作将元素id1(输出位置)的内容修改为元素dom_input(输入位置)的内容。
4.8 DOM型XSS代码分析
DOM型XSS程序只有HTML代码,并不存在服务器端代码,所以此程序并没有与服务器端进行交互,代码如下所示。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>Test</title>
<script type="text/javascript">
function tihuan()
{
document.getElementById("id1").innerHTML = document.getElementById("dom_input").value;
}
</script>
</head>
<body>
<center>
<h6 id="id1">这里会显示输入的内容</h6>
<form action="" method="post">
<input type="text" id="dom_input" value="输入"><br />
<input type="button" value="替换" onclick="tihuan()">
</form>
<hr>
</center>
</body>
</html>
单击“替换”按钮时会执行JavaScript的tihuan()函数,而tihuan()函数是一个DOM操作,通过document.getElementByld的id1的节点,然后将节点id1的内容修改成id为dom_input中的值,即用户输入的值。当输入<img src=1 οnerrοr=“alert(/xss/)”/>时,单击“替换”按钮,页面弹出消息框,但由于是隐式输出的,所以在查看源代码时,看不到输出的XSS代码。