XSS攻击

XSS, 即为(Cross Site Scripting), 中文名为跨站脚本, 是发生在目标用户的浏览器层面上的,当渲染 DOM 树的过程成发生了不在预期内执行的 JS 代码时, 这个不在预期的JS代码是攻击者将恶意代码植入到提供给其它用户使用的页面中 ,就发生了 XSS 攻击。

跨站脚本攻击有可能造成以下影响。
利用虚假输入表单骗取用户个人信息。
利用脚本窃取用户的 Cookie 值,被害者在不知情的情况下,
帮助攻击者发送恶意请求。
显示伪造的文章或图片。

反射性XSS

反射型XSS只是简单的把用户输入的数据从服务器反射给用户浏览器,要利用这个漏洞,攻击者必须以某种方式诱导用户访问一个精心设计的URL(恶意链接),才能实施攻击。
攻击者构造出特殊的 URL,其中包含恶意代码
用户打开带有恶意代码的 URL 时,网站服务端将恶意代码从 URL 中取出,拼接在 HTML 中返回给浏览器
用户浏览器接收到响应后解析执行,混在其中的恶意代码也被执行
恶意代码窃取用户数据并发送到攻击者的网站,或者冒充用户的行为,调用目标网站接口执行攻击者指定的操作

存储型XSS

存储型XSS漏洞的成因与反射型的根源类似,不同的是恶意代码会被保存在服务器中,导致其它用户(前端)和管理员(前后端)在访问资源时执行了恶意代码,用户访问服务器-跨站链接-返回跨站代码。
攻击者将恶意代码提交到目标网站的数据库中
用户打开目标网站时,网站服务端将恶意代码从数据库取出,拼接在 HTML 中返回给浏览器
用户浏览器接收到响应后解析执行,混在其中的恶意代码也被执行
恶意代码窃取用户数据并发送到攻击者的网站,或者冒充用户的行为,调用目标网站接口执行攻击者指定的操作

基于DOM的XSS

攻击者构造出特殊的 URL,其中包含恶意代码
用户打开带有恶意代码的 URL
用户浏览器接收到响应后解析执行,前端 JavaScript 取出 URL 中的恶意代码并执行
恶意代码窃取用户数据并发送到攻击者的网站,或者冒充用户的行为,调用目标网站接口执行攻击者指定的操作

反射型 XSS 跟存储型 XSS 的区别是:存储型 XSS 的恶意代码存在数据库里,反射型 XSS 的恶意代码存在 URL 里。
DOM 型 XSS 跟前两种 XSS 的区别:DOM 型 XSS 攻击中,取出和执行恶意代码由浏览器端完成,属于前端 JavaScript 自身的安全漏洞,而其他两种 XSS 都属于服务端的安全漏洞。

XSS攻击防范

设置 cookie 的 HttpOnly 属性,以禁止脚本访问到cookie
对用户的输入进行检查,进行特殊字符过滤。

CSRF攻击

CSRF 英文全称是 Cross-site request forgery,又称为“跨站请求伪造”。 顾名思义,CSRF 攻击就是黑客引诱用户打开黑客的网站,利用用户的登陆状态发起跨站请求。 降维解释:攻击者诱导受害者进入第三方网站,在第三方网站中,向被攻击网站发送跨站请求。 利用受害者在被攻击网站已经获取的注册凭证,绕过后台的用户验证, 达到冒充用户对被攻击的网站执行某项操作的目的。

受害者登录a.com,并保留了登录凭证(Cookie)
攻击者引诱受害者访问了b.com
b.com 向 a.com 发送了一个请求:a.com/act=xx。浏览器会默认携带a.com的Cookie
a.com接收到请求后,对请求进行验证,并确认是受害者的凭证,误以为是受害者自己发送的请求
a.com以受害者的名义执行了act=xx
攻击完成,攻击者在受害者不知情的情况下,冒充受害者,让a.com执行了自己定义的操作

攻击实现

最容易实现的是 Get 请求,一般进入黑客网站后,可以通过设置 img的 src 属性来自动发起请求
在黑客的网站中,构造隐藏表单来自动发起 Post 请求
通过引诱链接诱惑用户点击触发请求,利用 a 标签的 href。
CSRF 攻击不需要将恶意代码注入用户的页面,仅仅是利用服务器的漏洞和用户的登录状态来实施攻击。
CSRF 攻击成本也比 XSS 低,用户每天都要访问大量网页,无法确认每一个网页的合法性, 从用户角度来说,无法彻底防止 CSRF 攻击。

攻击特点

  • 攻击一般发起在第三方网站,而不是被攻击的网站。被攻击的网站无法防止攻击发生;
  • 攻击利用受害者在被攻击网站的登录凭证,冒充受害者提交操作;而不是直接窃取数据;
  • 整个过程攻击者无法直接窃取到用户的信息(Cookie,Header,网站内容等),仅仅是冒用Cookie中的信息;
  • 跨站请求可以用各种方式:图片URL、超链接、CORS、Form提交等等。部分请求方式可以直接嵌入在第三方论坛、文章中,难以进行追踪;

防范技术

防范CSRF攻击,其实本质就是要求网站能够识别出哪些请求是非正常用户主动发起的。 这就要求我们在请求中嵌入一些额外的授权数据,让网站服务器能够区分出这些未授权的请求,比如说在请求参数中添加一个字段,这个字段的值从登录用户的Cookie或者页面中获取的(这个字段的值必须对每个用户来说是随机的,不能有规律可循)。攻击者伪造请求的时候是无法获取页面中与登录用户有关的一个随机值或者用户当前cookie中的内容的,因此就可以避免这种攻击。

阻止外域访问

a. 同源检测:服务器端通过请求的Origin Header和Referer Header,判断请求的来源。
b. Samesite Cookie:控制只有同域(子域)能访问Cookie。 完全禁止第三方Cookie,跨站点访问时,任何情况下都不会发送Cookie。

随机数一致性检测
  • 令牌同步模式
    令牌同步模式(Synchronizer token pattern,简称STP)是在用户请求的页面中的所有表单中嵌入一个token,在服务端验证这个token的技术。token可以是任意的内容,但是一定要保证无法被攻击者猜测到或者查询到。攻击者在请求中无法使用正确的token,因此可以判断出未授权的请求。
    a. CSRF Token:用户登录后,生成随机值csrf_token,用户提交的操作类(POST)请求中,提交的表单中携带csrf_token,服务器端判断csrf_token是否正确。
    b. 双重Cookie验证:Cookie中保存csrf_token,用户提交表单中也携带csrf_token,服务器端判断两个值是否一致。

上述几条防范措施,语义一致性是推荐措施,虽然它不能防范CSRF攻击,但是可以减少防范的范围,只对POST请求进行防范。剩下的四种防范方法中,CSRF Token是最成熟、使用最广泛的方法,建议采用。

XSS 与 CSRF 的区别

CSRF 攻击不需要将恶意代码注入用户的页面,仅仅是利用服务器的漏洞和用户的登录状态来实施攻击。
CSRF 攻击成本也比 XSS 低,用户每天都要访问大量网页,无法确认每一个网页的合法性, 从用户角度来说,无法彻底防止 CSRF 攻击。

参考资料

  • https://houbb.github.io/2020/08/09/web-safe-04-csrf

跨站脚本攻击和跨站请求伪造相关推荐

  1. 前端安全之CSRF攻击(跨站请求伪造)

    提示:前端查漏补缺,仅代表个人观点,不接受任何批评 文章目录 一.CSRF是什么? 二.CSRF的攻击方式 1.浏览器的Cookie策略 2.GET,POST请求 3.P3P头的副作用 三.防范CSR ...

  2. CSRF 跨站请求伪造攻击

    1.概念 全称是CSRF 跨站请求伪造攻击,攻击者利用用户已登陆的账号,诱导用户访问已构造好的恶意链接或页面,在用户不之情的情况下,做一些违反用户本意的一些违法操作. 同源策略:协议相同,域名相同,端 ...

  3. web安全性测试用例(输入、输出、SQL注入、跨站请求伪造(CSRF)、跨站脚本攻击(XSS))实实在在的干货

    https://www.cnblogs.com/qmfsun/p/3724406.html 建立整体的威胁模型,测试溢出漏洞.信息泄漏.错误处理.SQL 注入.身份验证和授权错误. 1.   输入验证 ...

  4. 关于XSS(跨站脚本攻击)和CSRF(跨站请求伪造)

    我们常说的网络安全其实应该包括以下三方面的安全: 1.机密性,比如用户的隐私被窃取,帐号被盗,常见的方式是木马. 2.完整性,比如数据的完整,举个例子,康熙传位十四子,被当时四阿哥篡改遗诏:传位于四子 ...

  5. 【转载】关于XSS(跨站脚本攻击)和CSRF(跨站请求伪造)

    我们常说的网络安全其实应该包括以下三方面的安全: 1.机密性,比如用户的隐私被窃取,帐号被盗,常见的方式是木马. 2.完整性,比如数据的完整,举个例子,康熙传位十四子,被当时四阿哥篡改遗诏:传位于四子 ...

  6. XSS跨站脚本攻击与CSRF跨站请求伪造攻击的学习总结。

    之前就了解过这方面的知识,但是没有系统地总结.今天在这总结一下,也让自己在接下来的面试有个清晰的概念. XSS跨站脚本攻击: xss 跨站脚本攻击(Cross Site Scripting),为了不和 ...

  7. XSS跨站脚本攻击与CSRF跨站请求伪造攻击的学习总结

    转载:https://blog.csdn.net/baidu_24024601/article/details/51957270 XSS跨站脚本攻击与CSRF跨站请求伪造攻击的学习总结. <di ...

  8. 跨站请求伪造(CSRF)+ 跨站脚本攻击(XSS)

    一.CSRF 跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 X ...

  9. .NET Core实战项目之CMS 第十四章 开发篇-防止跨站请求伪造(XSRF/CSRF)攻击处理...

    通过 ASP.NET Core,开发者可轻松配置和管理其应用的安全性. ASP.NET Core 中包含管理身份验证.授权.数据保护.SSL 强制.应用机密.请求防伪保护及 CORS 管理等等安全方面 ...

  10. 网络安全-跨站请求伪造(CSRF)的原理、攻击及防御

    目录 简介 原理 举例 漏洞发现 链接及请求伪造 CSRF攻击 不同浏览器 未登录状态 登录状态 代码查看 工具 防御 用户 程序员 ​​​​​​​ 简介 跨站请求伪造(Cross-site requ ...

最新文章

  1. 傻瓜式动画制作软件_一个傻瓜版的动画制作软件——万彩动画大师
  2. php 加权计算公式,PHP计算加权平均数的实例分享
  3. gorm软删除_gorm踩坑:软删除与某个字段的唯一性
  4. 冰与火之歌:「时间」与「空间」复杂度
  5. (转)Linux下apache限速和限制同一IP连接数的实现
  6. muduo网络库源码阅读Step by Step
  7. centos 7下Hadoop 2.7.2 伪分布式安装
  8. M-SQL:超强的多任务表示学习方法
  9. 《Cracking the Coding Interview》——第10章:可扩展性和存储空间限制——题目1
  10. Masonry详解(转)
  11. 抖音的服务器究竟有多大
  12. idea切换Git分支时弹出Git Checkout problem
  13. facebook轮播视频_如何设置Facebook Messenger Messenger视频通话
  14. 210714 cypress
  15. 电商网站前台模板_湖州搜索引擎优化网站网络推广营销公司
  16. 一些RJS资源和演示入门教程
  17. 计算机横向查找,Excel查找引用函数:HLOOKUP查找首行并显示指定的值-excel技巧-电脑技巧收藏家...
  18. 【原创】随手记下-电脑版微信双开
  19. 华硕天选无法识别蓝牙
  20. Unity热更新系列之一: bundle打包和打包策略

热门文章

  1. 世界记忆大师的记忆力训练方法
  2. 长度游程编码的JAVA源代码,java游程编码
  3. Excel自定义格式日期计算问题
  4. idea热部署插件JRebel激活方法 (免费)
  5. 女黑客登场:轻松破解APP,共享单车任我骑!
  6. Java中获取时间戳
  7. 关于ESP8266WIFI模块的介绍
  8. MPUSH消息推送服务器搭建,MPUSH消息推送服務器搭建
  9. node.js 执行JS文件连接数据库报错
  10. 微信小程序轮播图常用炫酷样式----swiper