DOM型XSS常用知识点整理

目录

1.DOM基础

2.常用的DOM对象

3.常用的DOM方法

4.常用的DOM属性

5.DOM型XSS流程

1.DOM基础

HTML的标签都是节点,而这些节点组成了DOM的整体结构---节点树。

DOM的规定如下:整个文档是一个文档节点;每个HTML标签是一个元素节点;包含在HTML元素中的文本是文本节点;每一个HTML属性是一个属性节点;注释是注释节点;节点与节点之间都有等级关系。

通过HTML DOM,树种所有的节点均可通过JavaScript代码进行访问。所有HTML元素(节点)均可被修改,也可以创建或删除节点。在网站页面中有许多元素,当页面到达浏览器时,浏览器会为页面创建一个顶级的Document object文档对象,接着生成各个子文档对象,每个页面元素对应一个文档对象。每个文档对象包含属性、方法和事件。可以通过JS脚本对文档对象进行编辑,从而修改页面的元素。客户端的脚本程序可以通过DOM动态修改页面内容,从客户端获取DOM中的数据并在本地执行。由于DOM是在客户端修改节点的,所以基于DOM型XSS漏洞不需要与服务器交互。

 

2.常用的DOM对象

document对象: document是一个文档对象,代表给定浏览器窗口中的HTML文档。使用document对象可以对HTML文档进行检查、修改或添加内容,并处理该文档的内部事件。document.write可以在文档流中写入字符串。所以可以写入标签以及js代码。

 

windows对象: windows是一个窗口对象,表示浏览器中打开的窗口。一个窗口下面可以有多个文档对象。所以一个窗口下面只能有一个window.location.href,但是可以有多个document.URL,document.location.href。window是一个顶层对象,而不是另一个对象的属性即浏览器的窗口。浏览器会为HTML文档创建一个window对象,并为每个框架创建一个额外的window对象。document对象是window对象和frame对象的一个属性,是显示与窗口或框架内的一个文档。document只是属于window的一个子对象。Window.location包含href属性,直接取值赋值相当于window.location.href(当前页面完整URL)。document.URL取值时等价于window.location.href或者document.location.href。在某些浏览器中通过对docum.URL赋值来实现页面跳转,但是某些浏览器中不行。

 

element对象: element对象表示html元素。element对象可以拥有类型为元素节点、文本节点、注释节点的子节点。

 

attribute对象: attr对象表示html属性。 NameNodeMap对象百世元素属性节点的无序集合。

 

3.常用的DOM方法

getElementById():返回带有指定ID的元素。 getElementByTagName():返回包含带有指定标签名称的所有元素的节点列表。 getElementByClassName():返回包含带有指定类名的所有元素的节点列表。 appendChild():把新的子节点添加到指定节点。 removeChild():删除子节点。 replaceChild():替换子节点。 insertBefore():在指定的子节点前面插入新的子节点。 createAttribute():创建属性节点。 createElement():创建元素节点。 createTextNode():创建文本节点。 getAttribute():返回指定的属性值。 setAttribute():把指定属性设置或修改为指定的值。

4.常用的DOM属性

nodeName属性:规定节点的名称。 这个属性是只读的。 元素节点的nodeName返回标签名。属性节点的nodeName返回属性名。文本节点的nodeName始终是#text。文档节点的nodeName始终是#document。 例如:document.body.nodeName 返回body元素的名称。

nodeValue属性:规定节点的值。 元素节点的nodeValue是undefined或null。文本节点的nodeValue是文本本身。属性节点的nodeValue是属性值。

nodeType属性:返回节点的类型。 nodeType是只读的。

innerHTML属性:获取元素内容。 innerHTML可以被赋值,也可读,因此是被引用次数最多的对象属性,同时也是最容易产生安全问题的对象属性。

JS通常会调用DOM内置对象location来获得用户的输入。常用的location对象的属性如下: hash:从 # 开始的URL。 host:主机名和当前URL的端口号。 hostname:当前URL的主机名。 port:当前URL的端口号。 href:完整的URL。 pathname:当前URL的路径部分。 protocol:当前URL的协议。 search:从 ? 开始的URL部分。

 

5.DOM型XSS流程

1.用户输入一个带有参数的URL,在前端用js处理这个URL获取其中的参数,接着通过DOM调用参数调整页面中的节点,比如添加一个节点之类的,然后通过DOM输出到页面上。

2.用户输入一个带有参数的URL,后端处理这个参数,把参数存入数据库,然后通过json格式返回参数到页面,通过dom调用参数调整页面中的节点,通过dom输出到页面上。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章