后端系列知识讲解
文章平均质量分 80
路多辛
分享编程知识与经验
展开
-
Web 应用最安全的会话实现和保持方式是什么?
什么是会话管理?会话管理是一种在无状态的 HTTP 协议上保持用户状态的技术, Web 服务器通过会话管理可以识别和跟踪用户的请求。为什么需要会话管理?由于 HTTP 协议本身不保存状态信息,所以服务器需要一种机制来区分不同用户的请求,以及在多个请求之间保持用户的状态信息。会话创建会话信息应该由服务器端创建,服务器端创建会话 ID 以及会话信息后存储起来,将会话 ID 返回给 Web 客户端存储。会话 ID应 该是随机的、不可预测的,并且有足够的熵。会话 ID 通常是通过安全的随机数生成算法生成。原创 2024-04-21 20:34:36 · 947 阅读 · 2 评论 -
你真的知道 HTTP OPTIONS 方法的作用吗?
根据 RFC 7231规范定义,HTTP OPTIONS 方法是一个“用于获取针对特定资源的 HTTP 请求方法或 URI 的通信选项”的请求方法。简单来说,当客户端发送一个 OPTIONS 请求到服务器时,是在询问:“对于这个特定的URL,服务器能处理哪些 HTTP 方法或者有哪些特殊的限制或要求”。原创 2024-04-11 22:07:43 · 1051 阅读 · 0 评论 -
简化开发与提升可维护性的编程范式-声明式 API
声明式 API 的核心思想是将“意图”与“执行”分离。开发者通过声明式 API 描述自己想要的结果,而不需要关心实现这一结果的具体步骤。系统根据这些声明自动确定如何执行任务。声明式 API 一般是通过开发者编写描述期望的系统状态的配置文件来与系统交互。这些配置文件通常采用 YAML 或 JSON 格式,明确地列出所需资源的属性和关系。例如,在 Kubernetes 中,可以编写一个 Pod 或 Deployment 的 YAML 配置文件,描述应用程序运行所需的容器镜像、副本数量、资源限制等细节。原创 2024-04-07 21:57:17 · 480 阅读 · 0 评论 -
高效的二进制列化格式 MessagePack 详解
MessagePack (简称 msgPack)是一种高效的二进制序列化格式,可以将各种数据类型(如整数、字符串、数组等)转换为二进制格式,以便于在网络传输或存储时使用。与 JSON 和 XML 等文本格式相比,MessagePack 的二进制格式更加紧凑,因此在处理大量数据时可以提供更好的性能。原创 2024-03-24 22:03:30 · 612 阅读 · 0 评论 -
高效灵活可扩展的数据序列化格式 TLV 详解
TLV(Tag-Length-Value)是一种常用的数据序列化格式,主要用于数据包或消息的有效载荷编码。这种编码方式把数据划分为三个主要部分:Tag(标签)、Length(长度)和 Value(值)。这种方式在电信、计算机网络、智能卡、物联网等领域被广泛应用,尤其在那些需要高效、灵活且可扩展的数据编码方案的领域。原创 2024-03-17 19:32:03 · 851 阅读 · 0 评论 -
基于 .netrc 文件的身份验证详解
netrc(Network Resource Configuration)文件是一种在 Unix 和类 Unix 系统中用于存储网络登录和身份验证信息的文件,通常位于用户计算机的 home 目录下,文件名为 .netrc。这个文件可以包含(Machine)、登录名(Login)和密码(Password)三元组和其他字段,以便在执行诸如 FTP、HTTP、HTTPS、git 等命令行工具时自动进行身份验证。原创 2024-03-16 11:05:29 · 884 阅读 · 0 评论 -
API 常用的序列化协议详解
API(Application Programming Interface,应用程序编程接口)在软件开发中扮演着至关重要的角色,不同的系统之间借助 API 可以通过网络进行数据交换。在数据交换过程中,序列化协议是实现数据结构转换为便于传输和存储格式的关键技术。序列化协议定义了如何将数据结构转换为一系列字节,以及如何将这些字节再转换回原始数据结构。常用的序列化协议有很多种,每种协议都有其特点和适用场景。本文将简单介绍下几种常用的序列化协议。原创 2024-03-05 21:43:22 · 1001 阅读 · 0 评论 -
到底什么是单点登录(SSO)?
单点登录(Single Sign-On,简称 SSO)是一种集中式的身份验证和授权机制,用户只需在一处输入一次凭证(例如用户名和密码)就可以访问多个相关但独立的软件系统。在数字化时代,企业和组织通常会使用多个应用程序和服务来支撑其业务流程。如果没有单点登录,也就意味着用户需要记住多个系统的用户名和密码,这对于用户来说既不方便也不安全,单点登录的出现就是为了解决这个问题。原创 2024-02-29 21:42:50 · 995 阅读 · 0 评论 -
软件领域中,阈(yù)值还是阀(fá)值?
在日常的交流中,相信很多人经常听到阈值或者阀值这个词,大家可能都能理解这个词的意思,但是到底该用哪个词呢?原创 2024-02-26 21:01:51 · 604 阅读 · 0 评论 -
ChatGPT 开放接口使用的认证方式 API Key Authentication 详解
API Key 通常是一个字符串,由 API 提供者生成并提供给 API 调用者。当 API 调用者发起请求时,需要在请求中包含这个 API Key,服务端接收到请求后会检查这个 Key 是否有效。原创 2024-02-07 16:58:48 · 1054 阅读 · 0 评论 -
权限系统设计详解(三):ABAC 基于属性的访问控制
ABAC(Attribute-Based Access Control,基于属性的访问控制)是一种灵活的访问控制机制,可以根据多个属性来控制用户对资源的访问。这些属性可以是用户属性(如职位、年龄、部门)、资源属性(如文档分类、创建日期)、环境属性(如访问时间、网络位置)和行为属性(如读取、写入、执行)等。ABAC 通过定义一系列的访问策略,这些策略基于属性进行评估,以决定是否允许用户执行特定的操作。ABAC 提供了比传统的访问控制模型(如基于角色的访问控制 RBAC)更高的灵活性和更细的粒度。原创 2024-02-04 21:39:32 · 1595 阅读 · 0 评论 -
观察复杂系统内部情况的秘密武器-可观测性详解
在软件系统中,可观测性通常是指系统内部状态和行为的可见性,通过收集和分析系统产生的数据(如日志、度量指标、追踪信息),可以及时且准确地了解系统内部运行状况的能力。这些数据构成了对系统状态的可观测视图,使得运维和开发人员能够观察系统的实时行为、查看健康状况及发现潜在问题。原创 2024-02-03 15:16:00 · 1119 阅读 · 0 评论 -
权限系统设计详解(二):IBAC 基于身份的访问控制
IBAC(Identity-Based Access Control,基于身份的访问控制)是信息安全管理中的一种传统访问控制模型,根据用户的身份(如用户名或用户ID)来授权用户对系统资源的访问。这种方法直接将访问权限与个体的身份相关联,是最直观的访问控制方式之一。与RBAC(基于角色的访问控制)不同,IBAC 更加强调用户身份的作用,通过身份信息来控制访问权限。原创 2024-02-02 21:44:01 · 850 阅读 · 0 评论 -
权限系统设计详解(一):RBAC 基于角色的访问控制
RBAC(Role-Based Access Control,基于角色的访问控制)是一种被广泛使用的权限管理模型,用于控制用户对系统资源的访问权限。通过将权限与角色相关联,然后将角色分配给用户,从而实现更灵活、更易于管理的安全策略。原创 2024-01-31 21:48:33 · 1145 阅读 · 0 评论 -
新型唯一标识符 ULID 详解
ULID(Universally Unique Lexicographically Sortable Identifier,通用唯一字典排序标识符)是一种新型的唯一标识符格式,由 Alizain Feerasta 在2016年提出,在保持唯一性的同时,提供了可排序的特性。ULID 旨在解决 UUID 在某些场景下存在问题,并提供额外的优势。这使得 ULID 在需要排序的同时保持全局唯一性的场景中非常有用,例如在分布式系统中用于日志排序、数据库主键等。原创 2024-01-28 12:48:31 · 1370 阅读 · 0 评论 -
你真的了解 UUID 吗?
UUID(Universally Unique Identifier,通用唯一标识符)是在计算机科学和信息技术领域中被广泛使用的一种数据格式,用于确保不同系统间标识符的唯一性。UUID 的设计可以在没有中心化服务的情况下生成唯一的标识符,非常适用于分布式计算系统。原创 2024-01-27 11:46:12 · 1032 阅读 · 0 评论 -
HTTP API 认证技术详解(五):Token-based Authentication
Token-based 认证是一种无状态的认证方式,被广泛用于现代 Web 应用程序中,客户端在登录成功后,服务器会返回一个 Token,客户端需要保存这个 Token。在后续的请求中,客户端需要在请求头中带上这个 Token,服务器通过验证 Token 的有效性来完成身份认证。原创 2024-01-24 21:09:24 · 1353 阅读 · 0 评论 -
HTTP API 认证技术详解(四):HMAC Authentication
HMAC(Hash-based Message Authentication Code)认证是一种被广泛使用的技术,用于验证消息的完整性和真实性。HMAC 结合了哈希函数和加密密钥,比单纯的哈希更安全。在网络通信和数据存储中,HMAC 可以确保传输的数据未被篡改,并验证消息发送者的身份。原创 2024-01-17 21:38:45 · 1120 阅读 · 0 评论 -
HTTP API 认证技术详解(三):JWT Authentication
JWT(JSON Web Tokens)是一种开放标准(RFC 7519),定义了一种紧凑的、自包含的格式,用于实现网络应用程序中的身份验证和授权机制。原创 2024-01-15 21:56:08 · 1196 阅读 · 0 评论 -
HTTP API 认证技术详解(二):Digest Access Authentication
Digest Access Authentication 是一种基于 HTTP 协议的身份验证机制,通过数字摘要来验证用户的身份,相较于基本认证(Basic Authentication)使用用户名密码的方式,提供了更高的安全性和灵活性。在 Digest 认证中,不会直接发送密码,而是发送摘要信息,这样即使在非安全的通道上也不会因被截获数据而泄露密码。原创 2024-01-14 20:34:31 · 1094 阅读 · 0 评论 -
HTTP API 认证技术详解(一):Basic Authentication
Basic Authentication 是一种 HTTP 认证协议,用于进行简单的身份验证。RFC 2617 是认证方法的实现规范,MDN HTTP Authentication 进行了具体的描述。当用户尝试访问受保护的资源时,服务器会判断 Header 里面有没有 Authorization 字段,如果没有,会返回一个 401 Unauthorized 状态码,并在响应的 WWW-Authenticate 头部指定认证类型为 Basic。原创 2024-01-13 11:16:22 · 1706 阅读 · 0 评论 -
故障排查利器-错误日志详解
错误日志,也称异常日志,是记录应用程序、系统或服务在运行时出现的错误信息的文件或数据流。这些日志通常包含了足够的信息来识别、分析和解决问题,如错误类型、发生时间、发生位置以及可能的原因。错误可能是由于代码缺陷、资源不足、硬件故障或外部因素引起的。原创 2023-12-25 22:15:19 · 1032 阅读 · 0 评论 -
API 接口到底要不要添加签名机制?
API 签名机制是用于确认消息的来源和保护数据完整性的一种安全措施。发送方(客户端)使用和接收方(服务器端)预先约定的密钥和签名算法,对请求数据(请求体、时间戳、随机数等按照特定规则进行排序和拼接)计算出一个签名。发送方将生成的签名作为请求头或请求参数的一部分,随 API 请求一起发送。接收方在接收到请求后,使用相同的密钥和签名算法,对请求数据(和发送方采用一样的排序和拼接方式)计算出一个签名,并与接收到的签名进行比较,一样则处理请求,否则拒绝。原创 2023-12-24 19:37:49 · 1217 阅读 · 0 评论 -
Web 安全之文件下载漏洞详解
在数字化时代,文件下载是网络应用程序的重要的功能之一,用户可以通过这一功能获取所需的数据和信息。但是这一看似简单的功能的实现一不小心就会产生安全风险,即文件下载漏洞。攻击者可以通过文件下载漏洞非法获取到服务器上的敏感文件或受保护的文件,导致数据泄露、系统被入侵、知识产权被窃取等一系列严重后果。本文将深入讲解文件下载漏洞的原理、类型、攻击方式、影响和防护措施。原创 2023-12-24 10:46:54 · 2026 阅读 · 0 评论 -
设计 API 接口时如何设计高效的防重放机制?
重放攻击是一种常见的网络安全威胁,是指攻击者截获合法的 API 请求数据,并在之后重新发送这些数据到服务器,来获取未经授权的访问权限或执行其他恶意操作。这种攻击通常发生在没有适当防重放机制的 API 接口上。例如,一个 API 接口用于处理用户的转账请求,如果没有防重放机制,攻击者可以截获正常的请求数据,并使用这些数据重复请求接口,导致资金被多次转出。原创 2023-12-22 21:39:15 · 959 阅读 · 0 评论 -
Web 安全之文件上传漏洞详解
文件上传漏洞是网络安全中的常见问题,通常发生在网站或应用程序允许用户上传文件到服务器的场景。这类漏洞如果被攻击者利用,可能导致数据泄露、非法文件分发、服务器入侵甚至整个系统被控制。本文将深入讲解文件上传漏洞的类型、攻击方式、影响以及防护措施。原创 2023-12-20 21:34:08 · 1178 阅读 · 0 评论 -
加密数据安全性的两大安全护盾-前向安全性与后向安全性详解
前向安全性,也称为完美前向保密(Perfect Forward Secrecy, PFS),是指即使长期密钥在未来被破解或泄露,也不会危及过去的通信内容,从而保护过去的通信内容不被破解。具体来说,如果一个密码系统具有前向安全性,那么在某个时刻之后泄露的密钥将无法解密在此之前加密的数据。后向安全性(Backward Security)是指一个密码系统在密钥泄露或密码被破解的情况下,不会对未来的通信内容的安全性产生影响。原创 2023-12-17 14:26:11 · 1645 阅读 · 0 评论 -
链路追踪详解(四):分布式链路追踪的事实标准 OpenTelemetry 概述
为了解决这些问题,Google 开发了 Dapper 布式系统追踪的框架,Dapper 的思想启发了很多公司和开源项目,如 OpenTracing 和 OpenCensus,它们提供了标准化的 API 和库,以帮助开发者在他们的应用中实现分布式链路追踪和指标收集。OpenTelemetry 代表了分布式链路追踪和监控的未来方向,目标是简化和统一遥测数据的收集和管理,随着社区的不断发展和技术的成熟,OpenTelemetry 无疑将在现代软件开发和运维中发挥越来越重要的作用。原创 2023-12-13 21:52:38 · 1302 阅读 · 1 评论 -
Web 安全之公钥基础设施 PKI 详解
公钥基础设施(Public Key Infrastructure,PKI)是一种利用公钥密码学原理实现安全通信和数字签名的系统。它提供了一种信任模型,使得用户可以确信与他们通信的对象是可信的,并且通信的内容不会被篡改。要深入理解PKI,需要从基本的加密概念讲起,逐步深入到 PKI 的核心组成部分、工作原理和在现实世界中的应用。原创 2023-12-11 21:26:22 · 1154 阅读 · 0 评论 -
链路追踪详解(三):分布式链路追踪标准的演进
分布式链路追踪是现代云计算和微服务架构中一个关键技术,可以让开发者和运维团队理解和监控服务请求在复杂系统中的完整流转路径。分布式链路追踪技术的发展经历了从早期的专有解决方案到现代的开源和标准化的过程,本文讲解一下分布式链路追踪标准的演进过程。原创 2023-12-06 21:39:45 · 1469 阅读 · 0 评论 -
一文了解客户端与服务器端常用的协商密钥方法
在网络通信中,客户端和服务器端通常需要安全地协商密钥来加密通信内容,以确保数据传输的机密性和完整性,这个过程称为密钥交换(Key Exchange),这种方式可以让两个或多个通信方在不安全网络中建立一个安全的通信信道。以下是一些常见的秘钥协商方式及对应的优缺点。原创 2023-12-05 21:21:55 · 993 阅读 · 0 评论 -
简单聊聊更快、更稳、更高效的 QUIC 协议
QUIC(Quick UDP Internet Connections,快速 UDP 互联网连接)是一种基于 UDP 协议的传输层协议,由 Google 首次提出,并已在 IETF(互联网工程任务组)的标准化过程中得到发展。QUIC 的设计目标是减少网络通信的延迟,提高连接的可靠性,并改善多路复用的性能。QUIC是HTTP/3的基础,在提升 Web 性能方面有显著的作用。原创 2023-12-02 18:53:18 · 1097 阅读 · 0 评论 -
链路追踪详解(二):链路追踪技术的演进
链路追踪的发展历程可以追溯到几十年前,随着互联网技术的不断发展,链路追踪技术也在不断演进。原创 2023-11-28 22:03:48 · 1074 阅读 · 0 评论 -
一文读懂如何安全地存储密码
使用适应性哈希算法存储密码是目前的最佳实践,这些算法专门为密码存储而设计,提供了盐值的自动管理和计算强度的调整能力,以此来抵御各种攻击手段。适应性哈希算法是针对密码存储做了特别设计的算法,设计时考虑了计算时间,可以调整计算复杂度,以适应硬件性能的提升,使得即使在计算能力增强的情况下,破解密码的难度也能保持在一个较高的水平。每种密码存储方法都有其优缺点,但最佳实践是使用适应性哈希算法,适应性哈希算法专门为密码存储而设计,提供了盐值的自动管理和计算强度的调整能力,以此来抵御各种攻击手段。这种方式最好不要使用。原创 2023-11-24 22:00:08 · 1093 阅读 · 0 评论 -
Web 开发中 route 和 router 有什么区别?
在 Web 开发中,会经常和路由打交道,可能有的同学并没有仔细思考过到底什么是路由。路由是根据用户请求的 URL 来确定返回给用户的内容或页面的技术,即将 HTTP 请求映射到相应的处理代码,使得用户能够通过访问不同的 URL 来获取正确的页面或功能。在 Web 应用程序中,有很多不同的页面和功能需要通过不同的 URL 进行访问,这就需要通过路由来将 HTTP 请求映射到相应的处理代码上。借助路由,开发者可以创建出更加灵活和可维护的 Web 应用程序,提高应用程序的质量和安全性。原创 2023-11-16 21:21:08 · 197 阅读 · 0 评论 -
安全高效又易用的密码哈希神器-bcrypt 算法解析
所以采用强密码和有效的密码管理策略变得越来越重要,因此 bcrypt 应运而生,它是一种安全且灵活的密码哈希算法,能够抵御各种攻击,保障用户的数据安全。缺陷是每次哈希的结果都是一样的,相同的密码总是生成相同的哈希值,使得攻击者可以使用彩虹表(预先计算的哈希值列表)来反向查找密码。对密码进行哈希时,bcrypt 首先生成一个随机的盐(salt),盐是一个足够长的随机数,通常是128位(16字节),盐的作用是确保对同一个密码每次哈希的结果都不同。这是最不安全的存储方法,项目中是绝不能使用的。原创 2023-11-14 21:48:58 · 143 阅读 · 0 评论 -
HMAC 详解:在 Golang 中实现消息认证码
HMAC(Hash-based Message Authentication Code)是一种基于 Hash 函数和密钥的消息认证码,由 H.Krawezyk,M.Bellare,R.Canetti 于1996年提出的一种基于 Hash 函数和密钥进行消息认证的方法,并于1997年作为 RFC2104 被公布。HMAC 将密钥、消息和哈希函数一起使用,确保消息在传输过程中不被篡改,还可以验证消息的发送者身份。原创 2023-11-10 21:25:38 · 579 阅读 · 0 评论 -
带你一步步使用 Golang 实现 SSH 客户端
SSH 全称为 Secure Shell,是一种用于安全地远程登录到网络上的其他计算机的网络协议。相信做后端开发的同学没有不了解 SSH的,比较常用的登录服务器的 shell 工具例如 Xshell、SecureCRT、iTerm2 等都是基于 SSH 协议实现的。Golang 中的的 crypto/ssh 包提供了实现 SSH 客户端的功能,本文接下来详细讲解下如何使用 Golang 实现 SSH 客户端。原创 2023-11-08 22:13:39 · 675 阅读 · 0 评论 -
使用 Golang 实现基于时间的一次性密码 TOTP
上篇文章详细讲解了一次性密码 OTP 相关的知识,基于时间的一次性密码 TOTP 是 OTP 的一种实现方式。这种方法的优点是不依赖网络,因此即使在没有网络的情况下,用户也可以生成密码。所以这种方式被许多流行的网站使用到双因子或多因子认证中,包括 Google、GitHub、Facebook 和 Salesforce 等等。原创 2023-11-06 21:51:39 · 472 阅读 · 0 评论 -
增强数字世界安全性的一次性密码 OTP 详解
一次性密码(One Time Password),简称 OTP,是只能使用一次的密码。每次做身份认证时都会生成一个新的密码,在使用一次之后立即失效,不能重复使用。这种密码只能使用一次,因此即使攻击者能够窃取到密码,也无法再次使用该密码进行身份认证。原创 2023-11-04 10:58:46 · 213 阅读 · 0 评论