CSRF、XSS、盗链攻击解释

2024-06-17 14:36
文章标签 攻击 解释 xss csrf 盗链

本文主要是介绍CSRF、XSS、盗链攻击解释,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

CSRF(Cross-Site Request Forgery,跨站请求伪造)

CSRF是什么

CSRF 是一种攻击方式,攻击者通过利用用户在已认证的应用程序中的身份,伪造用户的请求来执行未经授权的操作。
这种攻击可以导致用户在不知情的情况下完成某些操作,如更改密码、发表评论或进行资金转账。

CSRF示例

用户登录网站a.com,攻击者会引导用户去点击网站b.com,b.com会冒充用户的身份去向a.com发起请求,a.com会验证请求,a.com不知道这个请求是b.com发起的,以为是用户发起的,就会去执行b.com请求参数,此时攻击完成。

CSRF图解

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

如何防御

  • 验证请求来源:应用程序可以检查请求的来源是否与预期的来源一致,可以通过检查 Referer 头部、使用 CSRF Token 或同源检查等方式来验证请求的合法性。
  • 添加随机生成的 CSRF Token:应用程序可以将 CSRF Token 添加到每个表单或请求中,并在服务器端验证 Token 的有效性。
  • 限制敏感操作的请求方法:将敏感操作限制为 POST、PUT、DELETE 等非幂等请求方法,在 GET 请求中不执行副作用操作。

XSS(Cross-Site Scripting,跨站脚本攻击)

XSS是什么

XSS 是一种攻击方式,攻击者通过将恶意脚本注入到受信任的网页中,使其在用户浏览器上执行。当用户访问受感染的页面时,恶意脚本可以窃取用户的敏感信息、篡改页面内容或执行其他恶意操作。XSS 可以分为三种类型:存储型 XSS、反射型 XSS 和 DOM 型 XSS。

如何防御

  • 输入验证和过滤:应用程序应该对用户输入进行严格的验证和过滤,防止恶意脚本的注入。
  • 输出编码:在将用户输入显示在网页上时,应使用适当的输出编码方式,如 HTML 转义或使用安全的模板引擎。
  • 使用 Content Security Policy(CSP):CSP 是一项安全政策,用于限制页面中可以加载的资源和执行的脚本,可以有效防御 XSS 攻击。

盗链(Hotlinking)

什么是盗链

盗链是指一个网站在其页面上使用其他网站的资源,例如图片、视频或脚本,而不是将资源保存在自己的服务器上。这种行为可能会对原始资源的所有者造成不公平的资源消耗,因为他们的资源被其他网站使用。有时,盗链还可能包含恶意意图,例如在盗链图像中嵌入广告或恶意代码。

盗链示例

A服务提供商不提供自己的服务,而通过技术手段去获取B服务提供商的资源到自己的网站上面,当用户去访问资源时,消耗的是B服务提供商的资源,但是增加的却是A服务提供商的点击量。此时被盗链的对象就是B服务提供商。
A相当于第三方网站,去跨域获取B的资源,构成了盗链。

如何判断有没有盗链

最直接的测试就是写一个网页插入一个来自第三方的链接,如果没有防护是可以下载到本地的显示的,防护了就会被判断为盗链,无法下载,请求被拦截。
根据referer请求头判断请求体的来源,判断是否为盗链。

如何防御

  • 配置服务器防盗链:通过配置服务器,可以限制只允许特定域名或来源访问资源,拒绝其他网站的访问。
  • 图片水印或替换:在图片上添加水印或修改图片,以防止被其他网站直接使用。
  • 使用访问控制和身份验证:通过访问控制和身份验证机制,限制只有授权用户才能访问资源。

每个攻击中涉及到的其它知识点补充

CSRF

什么是幂等方法

"幂等"是指对同一个操作进行多次执行所产生的效果与执行一次的效果相同。换句话说,无论执行多少次,结果都是一致的。

HTTP 请求方法可以被分类为幂等和非幂等请求方法:

幂等请求方法:GET:用于获取资源,多次发送相同的 GET 请求,不会对服务器端产生副作用或改变其状态。例如,多次请求同一个网页,不会对服务器上的资源进行修改。PUT:用于更新或替换服务器上的资源,多次发送相同的 PUT 请求,结果也是一致的。例如,多次更新同一个资源,最终结果与单次更新相同。非幂等请求方法:POST:用于向服务器提交数据,每次发送 POST 请求都可能对服务器端产生副作用或改变其状态。例如,创建新资源或执行一次性的操作。DELETE:用于删除服务器上的资源,多次发送相同的 DELETE 请求,结果也是不同的。例如,多次删除同一个资源,只有第一次会成功,后续请求将返回错误。

并非所有的非幂等请求方法都会引起状态的改变,例如,发送相同的 POST 请求可能会创建多个相同的资源,但这并不是幂等的,因为每个请求都产生了不同的结果。

CSRF Token、同源如何检查

CSRF Token:
  • 在服务器端生成一个随机的 CSRF Token,并将其嵌入到用户的会话中或者通过表单隐藏字段的方式传递给客户端。
  • 在每个需要防御 CSRF 攻击的请求中,包括表单提交、AJAX 请求等,将 CSRF Token 添加到请求中。
  • 在服务器端对每个请求进行验证,检查请求中的 CSRF Token 是否与用户会话中的 Token 相匹配。
  • 如果 CSRF Token 验证失败,服务器可以拒绝请求或采取其他适当的操作。
同源检查:
  • 同源检查是通过比较请求的来源(Origin 或 Referer)与目标站点的来源来验证请求的合法性。
  • 对于 Referer,浏览器会在请求头部的 Referer 字段中发送当前页面的 URL。
  • 服务器端可以通过比较请求的来源与目标站点的来源来判断请求是否来自同一源。
  • 如果来源不匹配,服务器可以拒绝请求或采取其他适当的操作。

需要注意的是,CSRF Token 和同源检查是可以同时使用的,以提供更强的防御机制。同时,合适的防御策略取决于具体的应用程序和开发环境,因此在实施防御措施时需要根据具体情况进行调整。

这篇关于CSRF、XSS、盗链攻击解释的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1069712

相关文章

wolfSSL参数设置或配置项解释

1. wolfCrypt Only 解释:wolfCrypt是一个开源的、轻量级的、可移植的加密库,支持多种加密算法和协议。选择“wolfCrypt Only”意味着系统或应用将仅使用wolfCrypt库进行加密操作,而不依赖其他加密库。 2. DTLS Support 解释:DTLS(Datagram Transport Layer Security)是一种基于UDP的安全协议,提供类似于

速盾高防cdn是怎么解决网站攻击的?

速盾高防CDN是一种基于云计算技术的网络安全解决方案,可以有效地保护网站免受各种网络攻击的威胁。它通过在全球多个节点部署服务器,将网站内容缓存到这些服务器上,并通过智能路由技术将用户的请求引导到最近的服务器上,以提供更快的访问速度和更好的网络性能。 速盾高防CDN主要采用以下几种方式来解决网站攻击: 分布式拒绝服务攻击(DDoS)防护:DDoS攻击是一种常见的网络攻击手段,攻击者通过向目标网

嵌入式技术的核心技术有哪些?请详细列举并解释每项技术的主要功能和应用场景。

嵌入式技术的核心技术包括处理器技术、IC技术和设计/验证技术。 1. 处理器技术    通用处理器:这类处理器适用于不同类型的应用,其主要特征是存储程序和通用的数据路径,使其能够处理各种计算任务。例如,在智能家居中,通用处理器可以用于控制和管理家庭设备,如灯光、空调和安全系统。    单用途处理器:这些处理器执行特定程序,如JPEG编解码器,专门用于视频信息的压缩或解压。在数字相机中,单用途

请解释Java Web应用中的前后端分离是什么?它有哪些好处?什么是Java Web中的Servlet过滤器?它有什么作用?

请解释Java Web应用中的前后端分离是什么?它有哪些好处? Java Web应用中的前后端分离 在Java Web应用中,前后端分离是一种开发模式,它将传统Web开发中紧密耦合的前端(用户界面)和后端(服务器端逻辑)代码进行分离,使得它们能够独立开发、测试、部署和维护。在这种模式下,前端通常通过HTTP请求与后端进行数据交换,后端则负责业务逻辑处理、数据库交互以及向前端提供RESTful

OpenStack:Glance共享与上传、Nova操作选项解释、Cinder操作技巧

目录 Glance member task Nova lock shelve rescue Cinder manage local-attach transfer backup-export 总结 原作者:int32bit,参考内容 从2013年开始折腾OpenStack也有好几年的时间了。在使用过程中,我发现有很多很有用的操作,但是却很少被提及。这里我暂不直接

OpenStack实例操作选项解释:启动和停止instance实例

关于启动和停止OpenStack实例 如果你想要启动和停止OpenStack实例时,有四种方法可以考虑。 管理员可以暂停、挂起、搁置、停止OpenStack 的计算实例。但是这些方法之间有什么不同之处? 目录 关于启动和停止OpenStack实例1.暂停和取消暂停实例2.挂起和恢复实例3.搁置(废弃)实例和取消废弃实例4.停止(删除)实例 1.暂停和取消暂停实例

Zuul详细解释

Zuul 是 Netflix 开源的 API 网关,广泛用于微服务架构中。它作为系统的前置网关,主要功能包括路由、负载均衡、限流、安全性管理等。Zuul 最常见的应用场景是作为反向代理,它接收所有来自客户端的请求,并将请求转发给后端的微服务,从而屏蔽了微服务的复杂性。Spring Cloud 集成了 Zuul,使其成为 Spring Cloud 微服务生态系统中的一个重要组件。 为什么使用 Zu

xss-labs-master通关教程

一.level1 先来进行一下代码审计 <?php ini_set("display_errors", 0);//关闭错误显示$str = $_GET["name"]; //接受URL来的get形式的name传参echo "<h2 align=center>欢迎用户".$str."</h2>";//在网页输出,并不是echo执行的,而是echo把HTML代码发送到浏览器,浏览器对发送的H

GetWay详细解释

Spring Cloud Gateway 是 Spring Cloud 提供的一款全功能 API 网关,作为微服务架构中的流量管理工具,提供了统一的入口来处理来自客户端的所有请求。它具有以下功能:路由请求、限流、熔断、监控、认证与授权等。 Spring Cloud Gateway 的设计基于 Spring 5.0 和 Spring Boot 2.0,并与 Spring WebFlux 深度集成,

rtklib.h : RTKLIB constants, types and function prototypes 解释

在 RTKLIB 中,rtklib.h 是一个头文件,包含了与 RTKLIB 相关的常量、类型和函数原型。以下是该头文件的一些常见内容和翻译说明: 1. 常量 (Constants) rtklib.h 中定义的常量通常包括: 系统常量: 例如,GPS、GLONASS、GALILEO 等系统的常量定义。 时间常量: 如一年、一天的秒数等。 精度常量: 如距离、速度的精度标准。 2. 类型