跨站脚本攻击 XSS(Cross Site Scripting),为了不和层叠样式表 ( Cascading Style Sheets,CSS ) 的缩写混淆,故将跨站脚本攻击缩写为 XSS。
恶意攻击者 往 Web 页面里插入恶意 JavaScript 代码,当用户浏览该页面时,嵌入在 Web 里面的 JS 代码会被解析实行,从而达到恶意攻击用户的目的。
在一个 Web 页面上,有一种很常见的功能是将用户输入的内容输出到页面上。
如果这里输入的内容是一段经过构造的 JS 代码,提交之后再次访问这个页面时,用户就会获取该 JS 代码在浏览器端实行的结果。
通过构造其他相应的代码,攻击者可以实行更具危害的操作。实行 XSS 攻击需要具备两个条件:
特点:恶意脚本通过 URL 传递并在页面上立即实行。
攻击方式:攻击者诱导用户点击一个包含恶意代码的链接,恶意代码被浏览器实行。
示例:当用户点击一个包含恶意脚本的链接时,服务器将恶意脚本反射回用户的浏览器并立即实行。
非持久型常见的就是在 URL 中构造,将恶意链接发送给目的用户。当用户访问该链接时间,会向服务器发起一个 GET 请求来提交带有恶意代码的链接。造成反射型 XSS 主要是 GET 范例。
特点:恶意脚本存储在目的服务器的数据库中,并在用户访问相关页面时实行。
攻击方式:攻击者将恶意代码输入到网站的某个输入表单中,代码被存储在服务器上,其他用户访问该页面时恶意代码被实行。
示例:攻击者在论坛或批评区发布含有恶意脚本的帖子,其他用户查看该帖子时恶意脚本被实行。
持久型常见的就是在 博客留言板、反馈投诉、论坛批评,可以将恶意代码和正文都存入服务器的数据库。每次访问都会触发恶意代码。 例如: alert(/xss/)
反射型 XSS 与 存储型 XSS 的区别:DOM 型
一、被攻击对象的差别
反射型 XSS 的被攻击对象一般是攻击者去探求的,就好比说:一个攻击者想盗取 A 的 QQ 号,那么攻击者就可以将一个含有反射型 XSS 的 URL 链接给 A,此时我们可以看出,需要将特定的 URL,注意是特定的 URL 给 A,当 A 点击进入链接时,就受到 XSS 攻击,以是这种攻击范围不是特殊的广。
而存储型 XSS 是广撒网的方式或者指定的方式,就是攻击者将存储型 XSS 放在一些有 XSS 漏洞的网站上,只要有效户访问这个链接就会中招,而攻击者也可以探求被攻击对象,好比说上面的例子,以是我们可以看出,存储型 XSS 的危害性更大,范围更广,可以不需要探求被攻击对象,只要存储型 XSS 在服务器上就能实行攻击。
DOM 型 XSS 的被攻击对象其实和反射型 XSS 被攻击对象差不多,就是给攻击对象放送 URL。
二、解析位置差别(个人感觉是反射型与存储型区别的本质)
反射型XSS的脚本被解析的地方是浏览器,而存储型XSS的脚本被解析的地方是服务器,DOM型XSS也是浏览器,以是DOM型又叫DOM反射型XSS。但是反射型XSS需要联网,而DOM型不需要!
三、存储时间差别
反射型XSS是既有即用,没有持久性,而存储型 XSS 是存储在服务器上,只要服务器不挂机或者是被干掉,就不停会有,DOM 型 XSS 和反射型差不多,但是用人就扯淡了,那反射型只要不改变源代码不就是不停存在吗?不是的,反射型XSS是必须得特定的URL才气使得被攻击对象中招,如果是单单官方网页,就没有了咯,存储型就差别,只要服务器里面有存储型XSS,岂论是不是官网,被攻击对象都会被攻击。
四、允许输入点的差别(这是DOM型与其他两种的区别)
一般情况下,反射型XSS在搜索框啊,或者是页面跳转啊这些地方,而存储型XSS一般是留言,或者用户存储的地方,而DOM呢?是在DOM位置上,不取决于输入情况上。
特点:恶意脚本通过修改浏览器的 DOM(文档对象模型)布局实行。
攻击方式:攻击者操纵页面中的 JavaScript,使其实行恶意代码,通常无需与服务器交互。
示例:通过恶意 URL 参数或输入值,攻击者修改页面的 JavaScript 代码,使其在用户的浏览器中实行恶意操作。
在讲解 DOM-XSS 之前,先以图来说明到底什么是 DOM:
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) | Powered by Discuz! X3.4 |