我有一个Web应用程序,并在其上运行XSS扫描,并报告我的一个页面中有一个Java小程序可能对XSS开放。
测试设法将javascript警告框分配给以下HTML代码:
<param name='id' value='' onMouseOver=alert(40041)>
我的问题是 - 这是一个有效的测试吗?将对Param对象进行任何XSS javascript操作会导致任何现实问题吗?我不认为param对象上的MouseOver会做任何事情。
由于
答案 0 :(得分:1)
这是一项有效的测试,可能是一个严重的漏洞。
如果value
的内容未被转义,则攻击者可以关闭该标记并添加任何其他脚本。
即使<>
被转义/剥离,但报价却没有,但它仍然可以被利用:攻击者可以附加onload
和onerror
等事件处理程序。在现代浏览器中,每个元素都可以显示(例如偶数<head>
),因此style
也可以使<param>
可以恢复。
像这样保护XSS非常简单。生成属性时始终使用引号并在值更改中:
&
至&
<
至<
,'
至&x39;
"
至"
。你不必担心劫持<param>
会发生什么不好的事情。