获得徽章 0
- 服务端漏洞
• 第三方库风险
• SQL注入
• 种类
i. ORM框架风险函数
ii. 使用动态参数构建模板
iii. 常见风险写法
• 防护方式
i. I尽量不要基于DB的Raw方法拼接构造SQL语句,而应该使用预编译、ORM框架
ii. 使用ORM框架时,应该注意框架中的特性,可能存在不安全的写法导致的SQL注入问题。
iii. 在复杂场景一定要使用拼接SQL,需要对外部输入进行转义。
• 命令执行
• 定义
• 代码中遇到需要调用某个命令才能完成的功能时候,会涉及到命令拼接,如果命令拼接没有做好安全过滤,那么将会导致命令注入风险,服务器权限将会被控制
• 防护方式:
i. 对动态的值尽可能设置白名单进行验证。
ii. 如果某些位置无法白名单,需要尝试对数据类型进行校验。
iii. 特殊字符黑名单的过滤,或者转义。
• 越权漏洞
• 定义
• 资源访问或操作时候主体权限 没有进行校验就会造成越权问题,细分 为:未授权、水平越权和垂直越权
• 种类
i. 水平越权
ii. 垂直越权
• SSRF
• 定义
• SSF又称服务端请求伪造攻击,指攻击者利用后端服务器为跳板,让后端服务向非预期网络地址 (主要指内网地址)发出恶意请求,获取敏感信息或执行恶意操作。
• 文件上传漏洞
• 防护方案
i. 限制文件类型: 如果系统只需要图片类型,可以从服务端解析文件格式,限制只能传入特定的文件格式。
ii. 站库分离:应用部署的位置和上传的文件分离,一般可以使用TOS、OSS等进行文件存储。
iii. 防止图床:对图片访问链接进行限制,包括时间限制,访问身份限制等。展开评论点赞 - 消息队列(Message Queue)是一种应用程序间或应用程序内进行异步通信的方法,常用于实现解耦、异步处理和日志处理等功能。以下是一些消息队列的常见使用场景:
解耦:通过使用消息队列,可以将发送方和接收方之间的直接依赖关系转换为松耦合的消息传递方式。发送方将消息发送到队列,接收方从队列中获取并处理消息。这种方式使得发送方和接收方可以独立开发和部署,提高了系统的灵活性和可维护性。
异步处理:消息队列允许将消息放入队列后立即返回,接收方可以按需处理这些消息。这种异步处理方式可以提高系统的响应速度和吞吐量,特别是在处理大量请求时。
日志处理:消息队列可以用于实现日志记录和处理。发送方将日志消息发送到队列,由专门的消费者从队列中获取并处理这些消息,进行日志的存储、分析和监控等操作。
消息分发:通过使用消息队列,可以将消息分发给多个消费者,实现负载均衡和并发处理。这种方式可以提高系统的吞吐量和处理能力。
消息路由:在分布式系统中,可以使用消息队列来实现跨节点或跨服务的消息路由。发送方将消息发送到特定的队列,由指定的消费者从该队列中获取并处理消息。
事件驱动:通过使用消息队列,可以构建事件驱动的架构。当特定事件发生时,将相应的消息发送到特定的队列,由消费者根据事件类型和处理逻辑来处理这些消息。
微服务通信:在微服务架构中,可以使用消息队列来实现服务间的异步通信和数据共享。服务将消息发送到特定的队列,由其他服务从该队列中获取并处理消息。展开评论点赞 - Redis是一种快速的非关系型数据库,常被用于作为缓存层、消息队列、排行榜等场景。以下是一些Redis的典型应用场景:
缓存层:Redis可用于构建高效的缓存系统,将数据存储在Redis中,以减轻数据库的负载。通过使用Redis,可以降低数据库的查询次数和网络延迟,从而提高整体应用程序的性能。
消息队列:Redis提供了发布/订阅、列表和阻塞式列表等消息队列功能。这些功能使得Redis可以作为实时消息系统的一部分,用于处理高并发情况下的消息传递。
排行榜系统:Redis的排序功能可以用于构建各种排行榜系统,例如游戏排行榜、音乐排行榜等。通过使用Redis,可以快速地计算和存储排名信息,以便在需要时进行查询。
会话缓存:Redis可以将用户的会话数据存储在内存中,从而避免了频繁的数据库访问。这种方式可以提高会话数据的读取速度,同时提供了更多的会话管理功能。
计数器和排行榜:Redis提供了原子性的计数器功能,可以用于实现点击计数、投票计数等应用。此外,Redis还可以用于实现各种排行榜系统,例如游戏排行榜、音乐排行榜等。
分布式锁:Redis提供了分布式锁的实现,可以用于解决分布式系统中的并发问题。通过使用Redis的原子性操作和发布/订阅功能,可以确保分布式锁的实现具有高可靠性和一致性。
分布式锁实现:Redis提供了分布式锁的实现,可以用于解决分布式系统中的并发问题。通过使用Redis的原子性操作和发布/订阅功能,可以确保分布式锁的实现具有高可靠性和一致性。
分布式事务:Redis提供了事务功能,可以用于实现分布式事务。通过使用Redis的事务功能,可以确保分布式事务的一致性和原子性。
总之,Redis适用于各种需要高性能、高可靠性和快速响应时间的场景,包括缓存层、消息队列、排行榜系统、会话缓存、计数器和排行榜、分布式锁、分布式锁实现和分布式事务等。展开评论点赞 - Redis是一款开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存也可持久化的日志型、Key-Value高性能数据库。Redis具有以下特点:
- 速度快,性能高,支持多种数据结构,如字符串、列表、集合、散列等;
- 支持持久化,可以将内存中的数据保存到磁盘中,防止数据丢失;
- 支持事务,可以保证一系列操作的原子性;
- 支持发布订阅模式,可以实现消息队列等功能;
- 支持分布式锁,可以解决分布式系统中的并发问题。
Redis的应用场景非常广泛,例如:
- 缓存:将热点数据缓存到Redis中,提高访问速度;
- 计数器:使用Redis的原子操作实现计数器功能;
- 排行榜:使用Redis的有序集合实现排行榜功能;
- 消息队列:使用Redis的发布订阅模式实现消息队列功能;
- 分布式锁:使用Redis的分布式锁实现分布式系统中的并发控制。展开评论点赞 - SIMD(Single Instruction, Multiple Data)是一种计算机指令集,它采用单条指令控制多个处理器同时对多个数据进行运算,从而加速计算过程。SIMD指令可以同时处理多个数据项,并且能够以单一指令的形式表示,使得指令的执行可以并行进行,从而提高了计算机的效率。
在计算机领域,SIMD指令集被广泛应用于图像处理、音频处理、数值计算等需要大量相同操作的任务。常见的SIMD指令集包括MMX、SSE、AVX等。
MMX(Multi Media eXtended)是Intel推出的一种SIMD指令集,它扩展了x86处理器的能力,使其可以同时处理多个数据项。MMX指令集适用于多媒体应用,例如音频处理、视频解码等。
SSE(Streaming SIMD Extensions)是Intel推出的一种SIMD指令集,它进一步扩展了MMX指令集的能力,并增加了新的指令和寄存器。SSE指令集适用于科学计算、3D图形渲染等领域。
AVX(Advanced Vector eXtended)是Intel推出的一种SIMD指令集,它扩展了SSE指令集的能力,增加了新的指令和寄存器,并支持FMA(Fused Multiply-Add)操作。AVX指令集适用于科学计算、图像处理、音频处理等领域。
总之,SIMD指令集是一种高效的计算机指令集,它可以同时处理多个数据项,从而提高计算机的计算效率。展开评论点赞