XSS、CSRF、SSRF漏洞原理以及防御方式_xss csrf ssrf

这里写目录标题
  • XSS
    • XSS攻击原理:
    • XSS的防范措施主要有三个:编码、过滤、校正
  • CSRF
    • CSRF攻击攻击原理及过程如下:
    • CSRF攻击的防范措施:
  • SSRF
    • SSRF漏洞攻击原理以及方式
    • SSRF漏洞攻击的防范措施
  • XML
  • XSS、CSRF、SSRF的区别
    • XSS、CSRF的区别

XSS

XSS(Cross Site Scripting):跨域脚本攻击。

XSS攻击原理:

不需要你做任何的登录认证,它会通过合法的操作(比如在url中输入、在评论框中输入),向你的页面注入脚本(可能是js、hmtl代码块等)。

XSS的攻击方式:
反射型XSS、存储型XSS、DOM型XSSS;

  1. 反射性XSS:
    反射型XSS又称为非持久性XSS,这种攻击方式玩玩具有一次性;
    攻击者通过电子邮件等方式将包含XSS代码的恶意链接发送给目标用户。当目标用户访问该链接时,服务器接收该用户目标的请求并进行处理,然后服务器把带有XSS代码的数据发送给目标用户的浏览器,浏览器解析这段带有XSS代码的恶意脚本后,就会触发XSS漏洞。
  2. 存储型XSS:
    存储型XSS又称为持久性XSS,攻击脚本将被永久的存放在目标服务器的数据库或文件中,具有很高的隐蔽性;
    这种攻击多见于论坛、博客和留言板,攻击者在发帖的过程中,将恶意脚本连同正常信息一起注入帖子的内容中。随着帖子被服务器存储下来,恶意脚本也永久的被存放在服务器的后端存储器中。当其它用户浏览这个被注入了恶意脚本的帖子时,恶意脚本会在他们的浏览器中得到执行。
    如果我们能够谨慎对待不明链接,反射性XSS将没有多大作为,但存储型XSS不同,它注入在一些我们信任的页面,难免受到攻击。
  3. DOM型XSS:
    DOM全称Document Object Model,使用DOM可以使程序和脚本能够动态访问和更新文档的内容、结构以及样式;
    DOM型XSS是一种特殊类型的反射型XSS,是基于DOM文档对象模型的一种漏洞;
    HTML的标签都是节点,这些节点组成了DOM的整体结构—节点树。通过HTML DOM,树中的所有节点均可通过JavaScript进行访问。所有HTML元素(节点)均可被修改,也可以创建或删除节点。
    在这里插入图片描述

在网站页面中有许多元素,当页面到达浏览器时,浏览器会为页面创建一个顶级的Document Object文档对象,接着生成各个子文档对象,每个页面元素对应一个文档对象,每个文档对象包含属性、方法和事件。客户端的脚本程序可以通过DOM动态修改页面内容,从客户端获取DOM中的数据并在本地执行。由于DOM是在客户端修改节点的,所以基于DOM型的XSS漏洞不需要与服务器交互,他只发生在客户端处理数据的阶段。
攻击方式:用户请求一个经过专门设计的URL,它由攻击者提交,而且其中包含XSS代码。服务器的响应不会以任何形式包含攻击者的脚本。当用户的浏览器处理这个响应时,DOM对象就会处理XSS代码,导致存在XSS漏洞。

因为JS触发的XSS就是DOM型XSS,而一般而言dom型的XSS都是反射性,很少有存储型。
XSS插入的话,一般是动态页面,但是有些是静态页面,不会和数据库发生交互,这就大大提高了安全性,我们就很难XSS了,而考虑到这一点,很多开发也把动态页面假装弄成静态页面,这种页面称为:伪静态页面;
控制台输入document.lastModified区分动态和伪静态页面,如果时间一直是新的,那么就是动态或者伪静态,如果时间一直不变,那么就是静态,没什么好插的了。

  • urldocument.referrer:回显上一个地址的;
  • document.title:回显标题;

在真实的环境中,一般document会URL解码(unescape)一次。
document支持native编码,那我们可以把我们的XSS代码进行转码,转成native再来XSS代码插入。

XSS的防范措施主要有三个:编码、过滤、校正

  1. 编码:对用户输入的数据进行HTML Entity 编码。把字符转换成 转义字符。Encode的作用是将$var等一些字符进行转化,使得浏览器在最终输出结果上是一样的。
    比如说这段代码:’<‘script>alert(1)’<’/script>
    若不进行任何处理,则浏览器会执行alert的js操作,实现XSS注入。进行编码处理之后,L在浏览器中的显示结果就是这个文本,将变量作为纯文本进行输出,且不引起JavaScript的执行。
  2. 过滤:移除用户输入的和事件相关的属性。如onerror可以自动触发攻击,还有onclick等。(总而言是,过滤掉一些不安全的内容)移除用户输入的Style节点、Script节点、Iframe节点。(尤其是Script节点,它可是支持跨域的呀,一定要移除)。
  3. 校正:避免直接对HTML Entity进行解码。使用DOM Parse转换,校正不配对的DOM标签。(DOM Parse:它的作用是把文本解析成DOM结构)
    常见2种方法:a.第一步的编码转成文本,然后第三步转成DOM对象,然后经过第二步的过滤。 b.还有一种更简洁:首先是encode,如果是富文本,就白名单。

在这里插入图片描述

CSRF

CSRF(Cross-site request forgery):跨域请求伪造,也被称为One Click Attack或者session riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。
常见攻击手段发送csrf的连接,通过伪造请求从而受害者点击后会利用受害者的身份发起这个请求。例如新增一个账号,修改用户密码等等。

CSRF攻击攻击原理及过程如下:

  1. 用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A;
  2. 在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时用户登录网站A成功,可以正常发送请求到网站A;
  3. 用户未退出网站A之前,在同一浏览器中,打开一个TAB页访问网站B(内含恶意代码);
  4. 网站B接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点A;
  5. 浏览器在接收到这些攻击性代码后,根据网站B的请求,在用户不知情的情况下携带Cookie信息,向网站A发出请求。网站A并不知道该请求其实是由B发起的,所以会根据用户C的Cookie信息以C的权限处理该请求,导致来自网站B的恶意代码被执行。

注意:CSRF攻击成功的两个必要条件:
①1.登录受信任网站A,并在本地生成Cookie。(如果用户没有登录网站A,那么网站B在诱导的时候,请求网站A的api接口时,会提示你登录),且cookies或者session 尚未过期;
②在不登出A的情况下,访问危险网站B(其实是利用了网站A的漏洞)。
这里用户C生成的cookie保证了用户可以处于登录状态,但网站B其实拿不到cookie。

CSRF漏洞检测:
检测CSRF漏洞是一项比较繁琐的工作,最简单的方法就是抓取一个正常请求的数据包,去掉Referer字段后再重新提交,如果该提交还有效,那么基本上可以确定存在CSRF漏洞。
并且随着对CSRF漏洞研究的不断深入,不断涌现出一些专门针对CSRF漏洞进行检测的工具,如CSRFTester,CSRF Request Builder等。
以CSRFTester工具为例,CSRF漏洞检测工具的测试原理如下:使用CSRFTester进行测试时,首先需要抓取我们在浏览器中访问过的所有链接以及所有的表单等信息,然后通过在CSRFTester中修改相应的表单等信息,重新提交,这相当于一次伪造客户端请求。如果修改后的测试请求成功被网站服务器接受,则说明存在CSRF漏洞,当然此款工具也可以被用来进行CSRF攻击。

CSRF攻击的防范措施:

  1. 将cookie设置为HttpOnly
  2. 验证 HTTP Referer 字段;
    (Referer:在 HTTP 头中的一个字段,它记录了该 HTTP 请求的来源地址。)
  3. 在请求地址中添加 token 并验证;
    (Token:服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。)
  4. 在 HTTP 头中自定义属性并验证。

方法1:
CSRF攻击很大程度上是利用了浏览器的cookie,为了防止站内的XSS漏洞盗取cookie,需要在cookie中设置“HttpOnly”属性,这样通过程序(如JavaScript脚本、Applet等)就无法读取到cookie信息,避免了攻击者伪造cookie的情况出现。设置cookie为HttpOnly的代码如下:response.setHeader( “Set-Cookie”, “cookiename=cookievalue;HttpOnly”);
方法2:
优点:
简单易行,网站的普通开发人员不需要操心 CSRF 的漏洞,只需要在最后给所有安全敏感的请求统一增加一个拦截器来检查 Referer 的值就可以。特别是对于当前现有的系统,不需要改变当前系统的任何已有代码和逻辑,没有风险,非常便捷。
缺点:
Referer 的值是由浏览器提供的,可以被代理工具或者抓包工具篡改;
方法3:
优点:
比Referer安全,对于 GET 请求,token 将附在请求地址之后,这样 URL 就变成 http://url?csrftoken=tokenvalue。 而对于 POST 请求来说,要在 form 的最后加上隐藏域"<"input type=“hidden” name=“csrftoken” value=“tokenvalue”/>,这样就把 token 以参数的形式加入请求了。
Token通常使用的方法就是在每次页面加载时,使用 javascript 遍历整个 dom 树,对于 dom 中所有的 a 和 form 标签后加入 token。这样可以解决大部分的请求,但是对于在页面加载之后动态生成的 html 代码,这种方法就没有作用,还需要程序员在编码时手动添加 token。
缺点:
难以保证 token 本身的安全。
方法4:
这种方法也是使用 token 并进行验证,和上一种方法不同的是,这里并不是把 token 以参数的形式置于 HTTP 请求之中,而是把它放到 HTTP 头中自定义的属性里。通过 XMLHttpRequest 这个类,可以一次性给所有该类请求加上 csrftoken 这个 HTTP 头属性,并把 token 值放入其中。这样解决了上种方法在请求中加入 token 的不便,同时,通过 XMLHttpRequest 请求的地址不会被记录到浏览器的地址栏,也不用担心 token 会透过 Referer 泄露到其他网站中去。
缺点:
然而这种方法的局限性非常大。XMLHttpRequest 请求通常用于 Ajax 方法中对于页面局部的异步刷新,并非所有的请求都适合用这个类来发起,而且通过该类请求得到的页面不能被浏览器所记录下,从而进行前进,后退,刷新,收藏等操作,给用户带来不便。另外,对于没有进行 CSRF 防护的遗留系统来说,要采用这种方法来进行防护,要把所有请求都改为 XMLHttpRequest 请求,这样几乎是要重写整个网站,这代价无疑是不能接受的。

SSRF

SSRF(Server-Side Request Forgery):服务器端请求伪造,是一种由攻击者构造请求,由服务端发起请求的安全漏洞。
一般情况下,SSRF攻击的目标是外网无法访问的内部系统(因为请求是由服务器端发送的,所以服务端能请求到与自身相连而与外网隔离的内部系统)。

SSRF漏洞攻击原理以及方式

利用一个可以发起网络请求的服务当作跳板来攻击内部其他服务。
SSRF的形成大多是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤和限制。
SSRF利用存在缺陷的Web应用作为代理攻击远程和本地的服务器。

  • 主要攻击方式:

对外网、服务器所在内网、本地进行端口扫描,获取一些服务的banner信息;
攻击运行在内网或本地的应用程序需;对内网Web应用进行指纹识别,识别企业内部的资产信息;
攻击内外网的Web应用,主要是使用HTTP GET请求就可以实现的攻击(struts2、SQli等);
利用file协议读取本地文件等。

SSRF漏洞攻击的防范措施

  1. 限制请求的端口只能为Web端口,只允许访问HTTP和HTTPS请求;
  2. 限制不能访问内网IP,防止对内网进行攻击;
  3. 屏蔽或者过滤返回的详细信息;

XML

XML:即可扩展标记语言;
Xml用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。Xml是标准通用标记语言(SGML)的子集,非常适合Web传输。XML提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。

  • DTD技术——xml文件的验证机制

DTD概述:文档类型定义——Document Type Definition;
DTD用来描述xml文档的结构,一个DTD文档包含: 元素的定义规则;元素之间的关系规则;属性的定义规则。

  • Shema(模式):

其作用与DTD一样,也是用于验证xml文档的有效性,只不过它提供了比DTD更强大的功能和更细粒度的数据类型,另外Schema还可以自定义数据类型。此外,Schema也是一个xml文件,而DTD则不是。

  1. 有外部实体将数据传入服务器,而且传入的格式是XML
  2. 服务器会将XML进行解析,解析以后将内容最终显示到某一个地方
  3. 最终显示数据的位置能够被取到
    满足以上要求才能
xml头引入了实体、文件
〈?xml version="1.0" encoding="GB2312" ?〉

〈!DOCTYPE 参考资料 [

〈!ELEMENT 参考资料 (书籍 )〉

〈!ELEMENT 书籍 (名称,作者,价格)〉

〈!ELEMENT 名称 (#PCDATA)〉

〈!ELEMENT 作者 (#PCDATA)〉

〈!ELEMENT 价格 (#PCDATA)〉

〈!ATTLIST 价格 货币单位 CDATA #REQUIRED〉

]〉

〈参考资料〉

〈书籍〉

〈名称〉XML入门精解〈/名称〉

〈作者〉张三〈/作者〉

〈价格 货币单位="人民币"〉20.00〈/价格〉

〈/书籍〉

〈书籍〉

〈名称〉XML语法〈/名称〉

〈!-- 即将出版 --〉

〈作者〉李四〈/作者〉

〈价格 货币单位="人民币"〉18.00〈/价格〉

〈/书籍〉

〈/参考资料〉

XSS、CSRF、SSRF的区别

相同点:
XSS,CSRF,SSRF三种常见的Web服务端漏洞均是由于,服务器端对用户提供的可控数据过于信任或者过滤不严导致的。

不同点:
XSS:是服务器对用户输入的数据没有进行足够的过滤,导致客户端浏览器在渲染服务器返回的html页面时,出现了预期值之外的脚本语句被执行。
CSRF:是服务器端没有对用户提交的数据进行随机值校验,且对http请求包内的refer字段校验不严,导致攻击者可以利用用户的Cookie信息伪造用户请求发送至服务器。
SSRF:是服务器对用户提供的可控URL过于信任,没有对攻击者提供的RUL进行地址限制和足够的检测,导致攻击者可以以此为跳板攻击内网或其他服务器。

XSS、CSRF的区别

  1. CSRF是跨站请求伪造; XSS是跨域脚本攻击。
  2. CSRF需要用户先登录网站A,获取cookie; XSS不需要登录。
  3. CSRF是利用网站A本身的漏洞,去请求网站A的api; XSS是向网站A注入JS代码,然后执行JS里的代码,篡改网站A的内容。(XSS利用的是站点内的信任用户,而CSRF则是通过伪装来自受信任用户的请求来利用受信任的网站。你可以这么理解CSRF攻击:攻击者盗用了你的身份,以你的名义向第三方网站发送恶意请求。)

:黑客&网络安全的零基础攻防教程

今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。

在这里领取:

这个是我花了几天几夜自整理的最新最全网安学习资料包免费共享给你们,其中包含以下东西:

1.学习路线&职业规划

在这里插入图片描述
在这里插入图片描述

2.全套体系课&入门到精通

在这里插入图片描述

3.黑客电子书&面试资料

在这里插入图片描述

4.漏洞挖掘工具和学习文档

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/602236.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

落地护眼灯十大品牌哪款性价比高?品牌排行榜前十名全面揭晓!

落地护眼灯十大品牌哪款性价比高&#xff1f;落地护眼灯已经逐渐成为孩子日常使用率较高的电器之一&#xff0c;它的优点非常突出&#xff0c;对于学习、工作、绘画等环境都能够提供良好的健康环境&#xff0c;同时还携带多种智能调节功能&#xff0c;例如&#xff1a;入座感应…

Android 启动提示Android 正在升级...提示源码分析

正常情况下烧录的新机会有这个提示&#xff0c;因为系统启动时候要对系统APP做DexOpt优化&#xff0c;流程如下&#xff1a; 进入performBootDexOpt函数&#xff1a; 提示框代码如下&#xff1a; 而提示框的Tile和Msg如下&#xff1a; 打印Log&#xff1a; 觉得本文对…

小项目“谈笑风生”测试报告

文章目录 一、项目介绍1.1项目背景1.2功能介绍 二、测试环境三、测试执行过程3.1功能测试3.1.1登录页面测试3.1.2注册页面测试3.1.3主页面测试 3.2界面自动化测试3.2.1登录模块测试3.2.2注册模块测试3.2.3展示各种信息模块测试3.2.34聊天消息传送模块测试 四、测试结论与建议 一…

Ubuntu软件中心不显示

装完Ubuntu后没有Software -- 更新apt sudo apt update -- 升级apt sudo apt upgrade -- 重启 sudo systemctl reboot-- 安装snap sudo apt-get install snap -- 安装软件商店 sudo snap install snap-store -- 更新软件商店 sudo snap refresh snap-store安装成功&#xff01…

C语言,实现数字谱到简谱的转换(二)

C语言&#xff0c;实现数字谱到简谱的转换&#xff08;二&#xff09; 前言&#xff1a;本文初编辑于2024年5月8日 CSDN&#xff1a;https://blog.csdn.net/rvdgdsva 博客园&#xff1a;https://www.cnblogs.com/hassle 前言 结合前文使用 之前的程序默认C调4/4拍&#xff…

论文润色就用意得辑:让你的学术之作更上一层楼

在学术的海洋里&#xff0c;每一篇论文都是一艘承载智慧与探索的小船。然而&#xff0c;好的内容也需要好的包装&#xff0c;才能更好地展现其价值。在这个追求精益求精的时代&#xff0c;意得辑以其专业的论文润色服务&#xff0c;成为了众多学者们的得力助手。 意得辑&#…

matlab 基于拉依达检验法(3σ准则) 实现多类别多参数的批量异常样本检验 V2.0

简介 拉依达检验法&#xff08;3σ准则&#xff09;是一种统计学方法&#xff0c;用于检测数据中的异常值。这种方法基于正态分布的特性来确定数据点是否可能是异常值。以下是关于拉依达检验法&#xff08;3σ准则&#xff09;的详细介绍&#xff1a; 基本原理&#xff1a; 拉…

移除链表元素题目讲解

一&#xff1a;题目 二&#xff1a;思路讲解 方法一&#xff1a; 1&#xff1a;创建两个指针prev和cur&#xff0c;初识位置cur为head&#xff0c;prev为NULL&#xff0c;然后两个指针往后移动开始去寻找与val值吻合的节点&#xff0c;最后找到节点的时候&#xff0c;cur指向…

Linux基础之yum和vim

目录 一、软件包管理器yum 1.1 软件包的概念 1.2 软件包的查看 1.3 软件包的安装和删除 二、Linux编辑器之vim 2.1 vim的基本概念 2.2 正常模式&#xff08;命令模式&#xff09; 2.3 底行模式 2.4 输入模式 2.5 替换模式 2.6 视图模式 2.7 总结 一、软件包管理器yu…

SSL证书0元购完整教程

为了确保在线交互的安全性与可信度&#xff0c;越来越多的网站选择启用SSL&#xff08;Secure Sockets Layer&#xff09;证书&#xff0c;为数据传输加上一层坚实的保护罩。尤为值得一提的是&#xff0c;随着技术的发展与行业推动&#xff0c;免费SSL证书逐渐成为众多网站所有…

秒翻-网页翻译最佳选择

使用方法&#xff1a; 安装“沉浸式翻译” 在扩展设置页面勾选“Beta”特性。 输入 DeepLX 现成的 API-https://api.deeplx.org/translate。

【Git】Commit后进行事务回滚

起因 因为一直使用git add .&#xff0c;在学习pytorch中添加了一个较大的数据集后&#xff0c;导致git push失败&#xff0c;而这个大数据集并不是必须要上传到仓库的&#xff0c;但是因为自己在设置.gitignore前已经进行了git comit&#xff0c;所以&#xff0c;需要进行事务…

C#中实现DataGridView数据的优雅Excel之旅(EPPlus)

DataGridView效果图&#xff1a; EXCEL效果图: 代码如下&#xff1a; 首先要引入EPPlus包 可以使用命令行来安装 Install-Package EPPlus 也可以使用NUGet搜索EPPlus来安装 public Homes(){InitializeComponent();ExcelPackage.LicenseContext OfficeOpenXml.LicenseContext…

机器学习:人工智能中实现自动化决策与精细优化的核心驱动力

&#x1f512;文章目录: &#x1f4a5;1.概述 ❤️2.机器学习基本原理 &#x1f6e4;️2.1定义与关键概念 &#x1f6e3;️2.2 机器学习算法 ☔3.自动化决策中的机器学习应用 &#x1f6b2;4.精细优化与机器学习的结合 &#x1f44a;5.挑战与前景 &#x1f4a5;1.概述 …

2024年学浪课程下载工具

学浪下载工具我已经打包好了&#xff0c;有需要的自己下载一下 学浪下载器链接&#xff1a;百度网盘 请输入提取码 提取码&#xff1a;1234 --来自百度网盘超级会员V10的分享 1.首先解压好我给大家准备好的压缩包 2.打开解压好的文件夹里面的N_m3u8D文件夹&#xff0c;然…

世界上最好用的在线看板工具 Trello 已支持 AI 啦!

对 Trello 免费版用户的提醒 从5月20日开始&#xff0c;免费版 Trello 工作区仅支持 10 个协作者&#xff0c;超过此限制将仅支持查看&#xff0c;无法编辑。解决这一问题的方法是减少协作者数量或升级到标准版或高级版。 Atlassian 去年在其云平台中引入了人工智能工具 Atlas…

TikTok营销策略解析:7大关键要素打造品牌影响力

TikTok作为近年来迅速崛起的短视频社交平台&#xff0c;已经成为全球范围内品牌营销的重要阵地。对于品牌而言&#xff0c;如何在TikTok上有效地开展营销活动&#xff0c;吸引目标受众的注意力&#xff0c;提升品牌知名度和影响力&#xff0c;是摆在他们面前的重要课题。本文No…

Tcl学习笔记(四)——流程控制、过程、命名空间、访问文件

1. 流程控制 if命令 if命令后跟两个参数&#xff1a;表达式、待执行的Tcl脚本。if命令中的每一个左大括号都必须与它前一个字符同行。 有elseif和else可选子句&#xff0c;使用时与if中第二个参数的右大括号放在同一行。 switch命令 switch命令利用一个给定值与多个模式进行匹…

Redis-五大数据类型-Hash(哈希)

五大数据类型-Hash&#xff08;哈希&#xff09; 简介 Hash是一个键值对的集合。 Hash 是一个 String 类型的 field&#xff08;字段&#xff09; 和 value&#xff08;值&#xff09; 的映射表&#xff0c;hash 特别适合用于存储对象。 Hash 是 Redis 中出现最为频繁的复合…

大模型市场爆发式增长,但生成式AI成功的关键是什么?

进入2024年&#xff0c;大模型市场正在爆发式增长。根据相关媒体的总结&#xff0c;2024年1-4 月被统计到的大模型相关中标金额已经达到2023年全部中标项目披露金额的77%左右&#xff1b;其中&#xff0c;从项目数量来看&#xff0c;应用类占63%、算力类占21%、大模型类占13%、…
最新文章