XSS和CSRF的攻击-学习记录

1、XSS(跨站脚本攻击)

基本概念

①XSS攻击原理

攻击者通过在受信任的网页中插入恶意脚本,使其在用户的浏览器中执行。攻击者可以利用XSS攻击来盗取用户的身份信息、篡改网页内容、劫持用户会话或进行其他恶意活动。

通俗点说就是,不需要用户做任何的登录认证,过合法的操作(比如在url中输入、在评论框中输入),向你的页面注入脚本(可能是js、hmtl代码块等),然后让被害者点击。

②XSS攻击后果

1、盗取用户信息:攻击者可以通过注入恶意脚本窃取用户的身份凭证、敏感数据(如用户名、密码、银行账号等)或会话信息。这些信息可以被用来进行身份盗窃、欺诈活动或其他违法行为


2、篡改网页内容:攻击者可以利用XSS漏洞修改网页的内容,包括插入恶意链接、广告、恶意下载等,误导用户点击或下载恶意内容


3、劫持用户会话:通过注入恶意脚本,攻击者可以窃取用户的会话令牌,从而劫持用户的登录会话,冒充用户的身份进行恶意操作


4、破坏用户体验:XSS攻击可能导致网页加载缓慢、崩溃或变得不可操作,给用户带来不便和困扰,降低网站的可用性。


5、损害网站声誉:一旦网站受到XSS攻击,并被用来传播恶意脚本或进行非法活动,会导致用户对该网站的信任度降低,对网站声誉造成不良影响。

③XSS攻击方式

1、存储型XSS:攻击者将恶意脚本存储在目标网站的数据库或文件中,当其他用户访问包含恶意脚本的页面时,脚本会被加载和执行。

2、反射型XSS:攻击者构造一个包含恶意脚本的URL链接,通过诱使用户点击或访问该链接来触发XSS攻击,脚本会在用户的浏览器中执行。

3、DOM(文档对象模型)型XSS:攻击者通过修改网页的DOM结构来注入恶意脚本,当浏览器解析网页并构建DOM树时,恶意脚本会被执行。

4、基于事件的XSS:攻击者通过在HTML标签的事件属性中注入恶意脚本,当用户触发该事件时,脚本会被执行。

5、XHR(XMLHttpRequest)型XSS:攻击者利用XMLHttpRequest对象发送请求,并在请求的响应中注入恶意脚本,当浏览器解析响应内容时,脚本会被执行。

6、通过第三方服务:攻击者可以通过攻击网页中使用的第三方服务(如广告、社交分享按钮等)来注入恶意脚本。

7、欺骗用户输入:攻击者构造一个看似安全的输入字段,但实际上注入了恶意脚本,当用户输入敏感信息时,脚本会被执行。

8、伪装链接欺骗:攻击者将恶意脚本隐藏在伪装成正常链接的URL中,用户点击链接后会执行脚本。

④如何预防XSS攻击

1、输入验证和过滤:对用户输入的数据进行验证,并过滤掉潜在的恶意脚本。可以使用输入验证库或编写自定义的输入验证函数。确保只接受预期的输入并拒绝任何可疑的内容。

2、输出编码:在将数据呈现到网页上之前,对数据进行适当的输出编码,以防止恶意脚本的执行。常见的编码方法包括HTML实体编码(例如将"<“编码为”<“)和JavaScript编码(例如将”‘“编码为”’")。

3、使用内容安全策略(Content Security Policy,CSP):CSP是一种在网页中实施的安全策略,它允许网站指定哪些来源的内容是被允许的,并限制了可以执行的脚本类型、插件和其他资源的加载。使用CSP可以减少XSS攻击的成功率。

4、设置HttpOnly标志和Secure标志:对于会话标识符(如Cookie),使用HttpOnly标志可以限制通过JavaScript访问这些标识符,减少会话劫持的风险。设置Secure标志可以确保只在通过HTTPS连接时传输Cookie,增加安全性。

2、CSRF(跨站请求伪造)

基本概念

①CSRF攻击原理

利用用户已经登录了的身份来发送未经授权的请求。

1、用户已经登录:受害者在浏览器中登录了某个网站(如银行网站)并获取了有效的会话 Cookie。

2、攻击者构造恶意页面:攻击者创建一个恶意网页,并在其中构建一个针对目标网站的请求。

3、受害者访问恶意页面:受害者在未登出目标网站的情况下,访问了攻击者创建的恶意网页。

4、自动发送请求:恶意页面中的JavaScript代码会自动在受害者的浏览器中触发一个针对目标网站的请求,该请求携带着受害者的会话 Cookie。

5、目标网站接收请求:标网站收到带有受害者会话 Cookie 的请求后,会误认为是合法的请求,并执行相应的操作。

②CSRF攻击后果

1、未经授权的操作:攻击者利用用户已经登录了的身份进行CSRF攻击,可以执行未经授权的操作,如更改用户密码、发送恶意邮件、进行资金转移等。这可能导致用户的账户被盗、个人隐私泄露或财产损失等严重后果。

2、数据篡改和损坏:攻击者可以通过CSRF攻击修改用户的数据,例如在社交媒体上发布恶意内容、篡改用户个人资料、删除重要文件等。这可能对个人、组织和业务造成严重的影响。

3、恶意软件传播:利用CSRF攻击,攻击者可以强制用户下载或安装恶意软件,从而在用户系统上执行恶意代码或传播恶意软件。

4、信任破坏和声誉损失:一旦用户的账户受到CSRF攻击并且遭到损失,他们很可能失去对受攻击网站的信任,并怀疑网站的安全性。这可能导致网站声誉的受损和用户流失。

5、法律责任和法律后果:如果网站未能采取适当的安全措施防范CSRF攻击,并且用户遭受了严重的损失,网站可能面临法律诉讼和赔偿责任。

③CSRF攻击方式

1、图片标签(Image tag):攻击者可以在恶意网页中插入一个隐藏的图片标签,同时指向目标网站上的一个特定请求。当用户访问恶意网页时,浏览器会自动加载并发送这个请求,导致CSRF攻击。

2、表单提交(Form submission):攻击者可以在恶意网页中创建一个表单,其中包含指向目标网站的提交操作。当用户在恶意网页中触发表单提交时,浏览器会自动发送请求执行CSRF攻击。

3、URL参数(URL parameter):攻击者可以构造一个恶意的URL,其中包含指向目标网站的请求,并在URL参数中传递攻击所需的数据。当用户点击这个URL时,浏览器会发送请求,并携带URL参数中的数据。

4、Ajax请求(Ajax request):攻击者可以使用JavaScript通过Ajax技术发送恶意请求,来执行CSRF攻击。这种方式通常需要攻击者先通过其他途径获取目标网站的API密钥或会话Cookie。

5、链接点击(Clickjacking):攻击者可以通过强制覆盖或隐藏真实页面的链接,诱使用户误点击链接执行CSRF攻击。这种方式常见于使用诱导性语言或图像的社交工程手段。

④如何预防CSRF攻击

1、使用CSRF令牌:在网站中使用CSRF令牌(也称为同步令牌或安全令牌)来验证请求的合法性。这个令牌会在用户访问网站时生成,并与用户会话相关联。在每个敏感操作的请求中,包括表单提交和AJAX请求,都需要包含这个令牌,并在服务器端进行验证。

2、验证请求来源:服务器端可以验证请求的来源是否合法。可以检查请求的Referer头部字段,确保请求来自于同一域名下的页面。这样可以防止来自其他网站的恶意请求。

3、限制敏感操作的访问方式:对于一些敏感操作,如修改密码、进行支付等,可以要求用户使用POST方法提交请求,而不是GET方法。这样可以防止CSRF攻击者通过构造恶意的URL参数来执行攻击。

4、使用验证码:在一些敏感操作前,可以要求用户输入验证码。验证码可以有效地防止自动化脚本或机器人执行CSRF攻击。

5、限制第三方网站的访问权限:如果网站允许其他网站嵌入自己的内容,可以使用X-Frame-Options头部字段来限制嵌入的网站。这样可以防止点击劫持(Clickjacking)攻击。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值