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://xiahunao.cn/news/3018912.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

成都百洲文化传媒有限公司电商服务的新领军者

在数字化浪潮席卷全球的今天&#xff0c;电商行业以其独特的魅力和无限的可能性&#xff0c;成为了推动经济发展的重要引擎。在这个竞争激烈的市场中&#xff0c;成都百洲文化传媒有限公司凭借其专业的电商服务和前瞻性的战略布局&#xff0c;正迅速崛起为行业的新领军者。 一…

图算法必备指南:《图算法:行业应用与实践》全面解读,解锁主流图算法奥秘!

《图算法&#xff1a;行业应用与实践》于近日正式与读者见面了&#xff01; 该书详解6大类20余种经典的图算法的原理、复杂度、参数及应用&#xff0c;旨在帮助读者在分析和处理各种复杂的数据关系时能更好地得其法、善其事、尽其能。 全书共分为10章&#xff1a; 第1~3章主要…

PGP加密技术:保护信息安全的利器

随着数字化时代的到来&#xff0c;个人和企业对信息安全的需求日益增长。PGP&#xff08;Pretty Good Privacy&#xff09;加密技术作为一项强大的加密工具&#xff0c;为保护敏感数据提供了一种有效的方法。本文将探讨PGP加密技术的基本原理、应用场景以及其在现代信息安全中的…

Linux入门攻坚——22、通信安全基础知识及openssl、CA证书

Linux系统常用的加解密工具&#xff1a;OpenSSL&#xff0c;gpg&#xff08;是pgp的实现&#xff09; 加密算法和协议&#xff1a; 对称加密&#xff1a;加解密使用同一个秘钥&#xff1b; DES&#xff1a;Data Encryption Standard&#xff0c;数据加密标准&…

无人机运营合格证:民用无人机驾驶航空器运营合格证书

无人机运营合格证是指经国家相关部门审核通过并颁发给相应无人驾驶航空器运营机构的一种资质证明。获得该证书的机构具备相关的技术和管理能力&#xff0c;能够安全、合规地运营无人驾驶航空器。 无人机运营合格证的申请流程一般包括报名、培训学习、考试准备、考试报名、考试…

无人机+垂直起降:微型共轴双旋翼无人机技术详解

微型共轴双旋翼无人机技术是一种独特的无人机设计&#xff0c;它结合了垂直起降&#xff08;VTOL&#xff09;能力和微型无人机的灵活性。这种设计允许无人机在无需跑道的情况下垂直起降&#xff0c;并具备在空中悬停和执行各种飞行动作的能力。 适用于集群控制&#xff0c;荷载…

华为OD机试【全量和已占用字符集】(java)(100分)

1、题目描述 给定两个字符集合&#xff0c;一个是全量字符集&#xff0c;一个是已占用字符集&#xff0c;已占用字符集中的字符不能再使用。 2、输入描述 输入一个字符串 一定包含&#xff0c;前为全量字符集 后的为已占用字符集&#xff1b;已占用字符集中的字符一定是全量…

1756jsp农产品销售管理系统Myeclipse开发mysql数据库C2C模式java编程计算机网页项目沙箱支付

一、源码特点 java 农产品销售管理系统 是一套完善的web设计系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统采用web模式&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff0…

压缩损失来源-量化噪声

压缩损失会以多种方式表现出来并会导致视觉损失。这里讨论最常见的压缩损失——量化噪声。量化是将大量输入值映射到较小集合的过程&#xff0c;如将输入值四舍五入为某个精度单位的值。 执行量化的设备或算法称为量化器。量化过程引入的舍入误差即量化误差或量化噪声。量化误差…

12个最强悍的数字孪生软件

数字孪生软件是一种尖端技术&#xff0c;可创建物理资产、系统或流程的虚拟表示。工程师、城市规划者、制造商和无数其他专业人士使用它来模拟、监控和分析数字环境中的真实场景。通过这样做&#xff0c;他们可以预测潜在问题、测试解决方案并简化操作&#xff0c;确保现实世界…

Linux网络编程(三)IO复用一 select系统调用

I/O复用使得程序能同时监听多个文件描述符。在以下场景中需要使用到IO复用技术&#xff1a; 客户端程序要同时处理多个socket&#xff0c;非阻塞connect技术客户端程序要同时处理用户输入和网络连接&#xff0c;聊天室程序TCP服务器要同时处理监听socket和连接socket服务器要同…

算法学习:数组 vs 链表

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 &#x1f3af; 引言&#x1f6e0;️ 内存基础什么是内存❓内存的工作原理 &#x1f3af; &#x1f4e6; 数组&#xff08;Array&#xff09;&#x1f4d6; 什么是数组&#x1f300; 数组的存储&#x1f4dd; 示例代码&#…

运放的同相与反相放大

反相放大器 同相端接地&#xff0c;电压为 0&#xff0c;反相端和同相端虚短&#xff0c;因此也是 0 V 的电压&#xff0c;同时由于虚断&#xff0c;几乎没有电流注入&#xff0c;所以R 1 和R 2 相当于串联&#xff0c;电阻上的电流相等 因此可以求出输入输出关系式为 V o u t…

excel如何将多列数据转换为一列?

这个数据整理借用数据透视表也可以做到&#xff1a; 1.先将数据源的表头补齐&#xff0c;“姓名” 2.点击插入选项卡&#xff0c;数据透视表&#xff0c;在弹出对话框中&#xff0c;数据透视位置选择 现有工作表&#xff0c;&#xff08;实际使用时新建也没有问题&#xff09;…

免费分享一套微信小程序在线订餐(点餐)配送系统(SpringBoot+Vue),帅呆了~~

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的微信小程序在线订餐(点餐)配送系统(SpringBootVue)&#xff0c;分享下哈。 项目视频演示 【免费】微信小程序在线订餐(点餐)配送系统(SpringBootVue) Java毕业设计_哔哩哔哩_bilibili【免费】微信小程序在…

每日OJ题_贪心算法三⑥_力扣738. 单调递增的数字

目录 力扣738. 单调递增的数字 解析代码 力扣738. 单调递增的数字 738. 单调递增的数字 难度 中等 当且仅当每个相邻位数上的数字 x 和 y 满足 x < y 时&#xff0c;我们称这个整数是单调递增的。 给定一个整数 n &#xff0c;返回 小于或等于 n 的最大数字&#xff0…

集成学习案例-幸福感预测

集成学习案例一 &#xff08;幸福感预测&#xff09; 背景介绍 此案例是一个数据挖掘类型的比赛——幸福感预测的baseline。比赛的数据使用的是官方的《中国综合社会调查&#xff08;CGSS&#xff09;》文件中的调查结果中的数据&#xff0c;其共包含有139个维度的特征&#xf…

哪款充电宝质量和口碑比较好?适合入手充电宝有哪些?

充电宝这么好用的移动电源就不用我说了吧&#xff0c;平时不出门还好&#xff0c;家里有插座可以充电&#xff0c;但是但凡出门了&#xff0c;手机电量一般是不能够支撑到&#xff0c;像我这种手机重度使用者&#xff0c;出门在外手机快没电了我就非常焦虑了&#xff0c;有一款…

五一 大项目

Docker 中的 Nginx 服务为什么要启用 HTTPS 一安装容器 1 安装docker-20.10.17 2 安装所需的依赖 sudo yum install -y yum-utils device-mapper-persistent-data lvm23 添加Docker官方仓库 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos…

Python pypdf库:PDF文档处理的利器

更多Python学习内容&#xff1a;ipengtao.com PDF&#xff08;Portable Document Format&#xff09;是一种常见的文档格式&#xff0c;广泛应用于各种场景&#xff0c;包括文档编辑、电子书籍、报告等。Python作为一种强大的编程语言&#xff0c;在处理PDF文档方面也有着丰富的…