试图找到一个 XSS,为什么这块不执行?
信息安全
xss
html
2021-09-04 01:59:03
1个回答
这与 XSS 过滤器没有任何关系,许多浏览器的相同行为就证明了这一点。这不是 queryString 的事情,它只是内容。答案很简单,让人放心。
通过.innerHTML=strHTML或 DOM 方法添加的内联脚本标签elm.appendChild(script)不执行。这意味着您可以整天注入恶意标签;除非这些标签作为硬编码的 HTML(可以在查看源代码中看到)在浏览器中出现,否则它们是良性的。
jQuery 的过度使用$(elm).html(strHTML)方法将运行脚本,但这仅仅是因为它解析字符串内容并将<script>标记内容发送到window.eval()执行它的函数。但默认情况下,动态脚本标签内容不会被执行。
您的示例使用 react,它有一个虚拟 DOM,它使用非 DOM 模型在内部协调现有页面 HTML 和动态 HTML。一旦找到更改,就会进行一系列小的 DOM 元素替换。同样,<script>通过 DOM添加标签不会执行标签内容,因此这在任何浏览器中都是安全的。
您仍然需要注意基于属性的“事件处理程序”,例如onerror、onload、onmouseover等,但<script>somethiungBad()</script>如果它不是由服务器打印或由 jQuery “智能”添加的,则它是良性的。示例中使用的 React 框架可能会为您过滤那些有问题的属性,我不是 React 专家...
其它你可能感兴趣的问题

