Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有关闭HTML标记的通用方法?_Html_Tags_Xss - Fatal编程技术网

是否有关闭HTML标记的通用方法?

是否有关闭HTML标记的通用方法?,html,tags,xss,Html,Tags,Xss,我正在测试一个web应用程序的XSS漏洞,我想知道攻击者是否有可能在不知道或不关心之前的HTML标记的情况下关闭它 因此,假设前面的标记(攻击者未知)是。攻击者是否可能执行以下操作 没有……但是如果您想在防御XSS的同时允许一些HTML,那么除了将HTML解析到DOM、将每个元素和属性传递给白名单之外,不应该使用任何方法,然后自己将其序列化回HTML。没有……但是如果您想在防御XSS的同时允许一些HTML,那么除了将HTML解析到DOM、将每个元素和属性传递给白名单,然后自己将其序列化回HTML

我正在测试一个web应用程序的XSS漏洞,我想知道攻击者是否有可能在不知道或不关心之前的HTML标记的情况下关闭它

因此,假设前面的标记(攻击者未知)是
。攻击者是否可能执行以下操作


没有……但是如果您想在防御XSS的同时允许一些HTML,那么除了将HTML解析到DOM、将每个元素和属性传递给白名单之外,不应该使用任何方法,然后自己将其序列化回HTML。

没有……但是如果您想在防御XSS的同时允许一些HTML,那么除了将HTML解析到DOM、将每个元素和属性传递给白名单,然后自己将其序列化回HTML之外,不应该使用任何方法。

否,没有通用的方法来关闭标记,但攻击者可以只堆叠几个常见的标记结尾,例如:

</div></span></p></table>

代码无论如何都是无效的,但浏览器会通过忽略不适用的标记(在本例中为
div
table
标记)或隐式创建匹配的起始标记(在本例中为
p
标记)来尽量利用代码


最终结果是,在大多数情况下,攻击者会突破一个或多个元素,可能会在途中添加一些空元素。

不,没有通用的方法来关闭标记,但攻击者可以只堆叠一些常见的标记结尾,例如:

</div></span></p></table>

代码无论如何都是无效的,但浏览器会通过忽略不适用的标记(在本例中为
div
table
标记)或隐式创建匹配的起始标记(在本例中为
p
标记)来尽量利用代码


最终的结果是,在大多数情况下,攻击者会破坏一个或多个元素,可能会在途中添加一些空元素。

一种更好、更轻量级的方法是只对所有数据进行HTML编码。将转换为有效地使注入的html无效

此外,如果您已经处于XSS情况下,攻击者可以通过javascript找到答案,但是如果您已经在执行javascript时受到攻击,我认为这种方法不是很有用

<html>
<body>
<div id="the-one-im-looking-for"><span id="my-attack-element" style="display:none;">&nbsp;</span>
<script type="text/javascript">
window.alert(document.getElementById("my-attack-element").parentNode.tagName);
</script>
</div>
</html>

alert(document.getElementById(“我的攻击元素”).parentNode.tagName);

我喜欢垃圾邮件结束标记的方法…

一种更好、更轻量级的方法是只对所有数据进行HTML编码。将转换为有效地使注入的html无效

此外,如果您已经处于XSS情况下,攻击者可以通过javascript找到答案,但是如果您已经在执行javascript时受到攻击,我认为这种方法不是很有用

<html>
<body>
<div id="the-one-im-looking-for"><span id="my-attack-element" style="display:none;">&nbsp;</span>
<script type="text/javascript">
window.alert(document.getElementById("my-attack-element").parentNode.tagName);
</script>
</div>
</html>

alert(document.getElementById(“我的攻击元素”).parentNode.tagName);

我喜欢垃圾邮件结束标签的方法…

答案几乎肯定是否定的,但攻击者肯定会知道它是什么标签?答案几乎肯定是否定的,但攻击者肯定会知道它是什么标签?