使用window.location.search跨站点脚本问题
我已经经历了很多论坛和维基百科,因为有几天试图了解XSS攻击alomost我花了2-3天,但仍然没有得到更好的主意,因为建议多位专家解决方案&我想知道黑客可以如何注入恶意代码在受害者浏览器? 并且我的应用程序已经用于运行某些App Scanner标准测试工具,因此它捕获了很多XSS问题。 我想在这里放一个我的应用程序的XSS问题,所以可以请一些人帮我理解我为这个问题究竟做了什么。 尽管如此,为了更好地理解XSS问题,我一直在努力。 这是我的代码片段
function getParameter(param) {
var val = "";
var qs = window.location.search;
var start = qs.indexOf(param);
if (start != -1) {
start += param.length + 1;
var end = qs.indexOf("&", start);
if (end == -1) {
end = qs.length
}
val = qs.substring(start,end);
}
return val;
}
var formName = getParameter("formName");
var myValue = '<a href="javascript:parent.opener.assignDateIps( new Date(''+year+'',''+month+'',''+thisDay+''), ''+contextstr+'', ''+formName+'' );window.close()" class="modulelink">'+thisDay+'</a></td>';
document.getElementById('calendarA').innerHTML = myValue;
var myValue = '<a href="javascript:parent.opener.assignDateIps( new Date(''+year+'',''+month+'',''+thisDay+''), ''+contextstr+'', ''+formName+'' );window.close()" class="modulelink">'+thisDay+'</a></td>';
这一行没有任何转义,它期望'(... ''+formName+'' );...'
是一个字符串。 但它可以成为一些其他的事情:
formName = "'); alert('I'm free to do anything here'); (''+"
document.getElementById('calendarA').innerHTML = myValue;
让我们把这样的片段放到myValue
:
... <img src=void onerror="alert('hacked')" /> ...
你可以检查它的工作原理:
document.querySelector('button').addEventListener('click', function () {
document.querySelector('output').innerHTML = document.querySelector('textarea').value;
})
<textarea>... <img src=void onerror="alert('hacked')" /> ...</textarea>
<button>Go</button>
<output></output>
您向我们展示的代码中没有任何内容易受攻击。
您正在阅读用户输入内容,因此可能会在此处引入漏洞。 这可能是您正在使用的工具正在检测的内容。
如果你的代码易受攻击,那么这将是因为你对formName
next的值做了什么(在你没有向我们展示的代码中)。
这是一个可能的基于DOM的XSS问题。
如果使用formName
的值,比如document.getElementById("demo").innerHTML=formName
或者某种方式使用formName
创建/修改DOM元素, formName
您很容易受到攻击,因为我可以创建自定义url,如http://urwebsite.html?formName=<script>document.cookie_will_be_transfered_to_my_server_here</script>
并要求登录人单击它(简单的社会工程)。现在我有该人的会话ID,使用它我可以做任何我想做的事情。
作为解决方案,来自用户的所有输入数据都必须进行html编码。
链接地址: http://www.djcxy.com/p/94189.html上一篇: Cross Site Scripting issue with window.location.search
下一篇: NotFoundHttpException in RouteCollection.php line 161: laravel 5.3