什么是XSS攻击,什么是CSRF攻击
原创XSS攻击
什么是XSS
Cross-Site Scripting(跨站点脚本攻击) ,简称XSS,是一种 代码注入攻击 。攻击者将恶意脚本注入目标网站,以便在用户的浏览器上运行。通过这些恶意脚本,攻击者可以获取敏感的用户信息,如Cookie、SessionID等等,从而危及数据安全。
XSS注射方法
简单地说,任何可以进入的地方都可以引起。XSS攻击,包括URL
- 在HTML在嵌入的文本中,使用了恶意内容。script标签形成注射
- 在内联的JavaScript在中,拼接的数据突破了原始限制(字符串、变量、方法名)等。
- 在标签属性中,恶意内容包含引号,从而打破属性值的限制,注入其他属性或标签
- 在标签的
href、src和其他属性,包括javascript:(伪协议)和其他可执行代码。 - 在
onload、onerror、onclick在这种情况下,不受控制的代码被注入。 - 在 style 属性和标签,包含类似的
background-image:url("javascript:...");代码(新版本的浏览器已经受到保护)。 - 在 style 属性和标签,包含类似的
expression(...)的 CSS 表达式代码(新版本的浏览器已经受到保护)。
XSS攻击的分类
根据攻击的来源,XSS攻击可分为存储攻击、反射攻击和DOM型三种
存储型XSS
存储型XSS攻击步骤
- 攻击者向目标网站的数据库提交恶意代码。
- 当用户打开目标网站时,网站服务器会从数据库中删除恶意代码并将其拼接在一起 HTML 返回到浏览器。
- 用户浏览器收到响应后,还会执行其中混合的恶意代码。
- 恶意代码窃取用户数据并将其发送到攻击者的网站,或模拟用户调用目标网站接口来执行攻击者指定的操作。
存储型 XSS(也称为持久化XSS)攻击在网站功能中很常见,用户保存数据,如论坛帖子、产品评论、用户私人信件等。
与反思型相比,这是最危险的跨站点脚本之一。XSS和DOM型XSS隐蔽性越高,危害就越大,因为 无用户手动触发 。任何允许用户存储数据的内容。web可以存储程序XSS漏洞,当攻击者提交一个段落时XSS代码被服务器接收并存储后,当所有访问者都访问一个页面时。XSS。
反射型XSS
反射型XSS攻击步骤
- 攻击者构建了一个特殊的 URL,其中包含恶意代码。
- 用户打开时会显示恶意代码。 URL 当,网站服务器将恶意代码从。 URL 取出,拼接起来 HTML 返回到浏览器。
- 用户浏览器收到响应后,还会执行其中混合的恶意代码。
- 恶意代码窃取用户数据并将其发送到攻击者的网站,或模拟用户调用目标网站接口来执行攻击者指定的操作。
反射型 XSS 跟存储型 XSS 不同之处在于:存储类型。 XSS 恶意代码存在于数据库中,为反射类型。 XSS 恶意代码是存在的。 URL 里。
反射型 XSS (也称为非持久性XSS)漏洞通常通过以下方式发现 URL 传递参数的功能,如网站搜索、跳转等。
由于用户需要主动打开恶意文件 URL 为了起到作用,攻击者往往会结合各种手段诱导用户点击。
POST 内容还可以触发反射类型。 XSS,只是它的触发条件苛刻(需要构建一个表单提交页面并引导用户点击),所以非常罕见。
DOM型XSS
DOM型XSS攻击步骤:
- 攻击者构建了一个特殊的 URL,其中包含恶意代码。
- 用户打开时会显示恶意代码。 URL。
- 用户浏览器接收响应并解析前端的执行。 JavaScript 取出 URL 恶意代码进入并执行。
- 恶意代码窃取用户数据并将其发送到攻击者的网站,或模拟用户调用目标网站接口来执行攻击者指定的操作。
DOM 型 XSS 跟前两种 XSS 的区别:DOM 型 XSS 在攻击中,恶意代码的移除和执行是由浏览器端完成的,属于前端。 JavaScript 它自己的安全漏洞,而另外两个 XSS 是服务器端的安全漏洞。
注意:
DOM通常用来表示html、xhtml和xml中的对象,使用DOM您可以允许程序和脚本动态访问和更新文档的内容、结构和样式。它不需要服务器直接参与解析响应, 触发XSS这取决于浏览器端。DOM分析,所以要警惕DOM型XSS这完全是前端的责任。,必须注意!!!。
对比XSS攻击

防御XSS攻击方法
- httpOnly :在cookie中设置HttpOnly属性后,js脚本将不会被读取。cookie信息
- 输入过滤 :一般用来检查输入格式,如电子邮件、电话号码、用户名、密码......依此类推,按照规定的格式输入。不仅前端负责,后端也要做同样的过滤检查。因为攻击者可以绕过正常的输入过程,并使用相关接口将设置直接发送到服务器。
- 转义HTML :如果已拼接 HTML 是必需的,则需要转义为引号、尖括号、斜杠。,但这并不完美.想对 HTML 完全转义整个模板中的插入点,您需要使用适当的转义库。
CSRF攻击
什么是CSRF
Cross-site request forgery(跨站请求伪造) 是使用户保持当前登录状态的一种方式。Web对应用程序执行意外操作的攻击方法。诸如此类:攻击者引诱受害者进入第三方网站,在那里向受攻击的网站发送跨站点请求。受害者已经在被攻击网站上获得的注册凭据被用来在后台绕过用户身份验证,从而模拟用户在被攻击网站上执行操作。
CSRF攻击流程

从上图可以看出,要完成一次CSRF攻击时,受害者必须依次完成两个步骤:
1.登录受信任的网站A并在当地生产。Cookie。
2.在不登出A在访问危险网站的情况下。B。
看到这一点,你可能会说,如果我不符合上述两个条件之一,我不会受到影响。CSRF攻击“。是的,这是真的,但你不能保证以下情况不会发生:
- 你不能保证在你登录一个网站后,你不会再打开一个网站。tab页面和访问另一个网站。
- 您不能保证在关闭浏览器后,您的本地Cookie立即过期,您的最后一个会话已结束。(事实上,关闭浏览器不能结束会话,但大多数人错误地认为关闭浏览器等同于注销。/会议结束...)
- 上图中的所谓攻击网站可能是具有其他漏洞的可信且访问频繁的网站。
CSRF的特点
- 攻击通常是在第三方网站上发起的。 ,而不是被攻击的网站。被攻击的网站无法阻止攻击的发生。
- 攻击使用受害者在被攻击网站上的登录凭据, 伪装成受害者提交手术 ;而不是直接窃取数据。
- 攻击者在整个过程中无法获得受害者的登录凭据,只会“冒用”。
- 跨站请求可以通过各种方式进行:图片URL、超链接、CORS、Form提交等。有些请求方法可以直接嵌入到第三方论坛和文章中,很难跟踪。
防御CSRF的方法
-
验证码 ;强制用户与应用程序交互以完成最终请求。这种方法可以很好地遏制。 csrf,但用户体验较差。
-
Referer check ;请求源限制,此方法是成本最低的,但不保证。 100% 因为服务器并不总是可用,所以很有效。 Referer,并且在较低版本的浏览器中存在伪造。 Referer 的风险。
-
token ; token 验证的 CSRF 防御机制被认为是最合适的选择 。(有关详细信息,您可以查看本系列中的前端身份验证对。token有一个详细的描述)如果网站同时存在 XSS 当有漏洞的时候,这种方法也是空谈。
XSS与CSRF的区别
- 通常来说 CSRF 是由 XSS 实现的,CSRF 通常被称为 XSRF(CSRF 它也可以通过直接从命令行发起请求来实现,等等)。
- 从本质上讲,XSS 是代码注入问题,CSRF 是 HTTP 问题。 XSS 是未过滤的内容,导致浏览器在代码执行时放入攻击者的输入。CSRF 这是因为浏览器正在发送 HTTP 请求时自动传送带 cookie,而综合网站的 session 都存在 cookie里面(Token可以避免验证)。
参考文档
前端面试以检查泄漏并填补空缺-(七) XSS攻击与CSRF攻击
版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除
itfan123