【鉴权】提升 JWT 安全性的最佳实践:防范常见风险与应对策略

目录

  • 引言
  • 一、JWT简介
  • 二、JWT的安全风险与防护措施
    • 2.1 签名算法不安全
    • 2.2 中间人攻击(MITM)
    • 2.3 重放攻击
    • 2.4 防止JWT泄露
    • 2.5 密钥管理与轮换
    • 2.6 验证JWT的来源和受众
    • 2.7 监控与审计
  • 三、提高 JWT 安全性的关键措施
    • 3.1 选择安全的签名算法
    • 3.2 强制使用 HTTPS
    • 3.3 合理设置 JWT 的过期时间
    • 3.4 安全存储 JWT
    • 3.5 密钥管理与轮换
    • 3.6 验证 JWT 的 `iss` 和 `aud` 字段
    • 3.7 日志记录与审计
  • 四、异常行为检测
    • 4.1 行为分析与威胁检测
    • 4.2 如何检测 JWT 滥用
    • 4.3 集成安全日志与监控
  • 总结

引言

**JWT(JSON Web Token)**作为一种轻量级的身份验证和授权机制,已被广泛应用于现代 Web 应用、微服务架构以及 API 安全领域。由于其跨平台的兼容性和无状态的特点,JWT 成为了开发者首选的身份认证方式。然而,在使用 JWT 时,如果没有充分理解其安全风险和最佳实践,可能会导致一系列严重的安全问题,包括身份伪造、数据泄露和服务滥用等。

本文将详细探讨 JWT 的常见安全风险,并提供切实可行的防护措施,帮助开发者在设计和实现 JWT 认证系统时,有效降低安全隐患。我们将从 JWT 的签名算法选择、存储方式、密钥管理等方面入手,提供一系列针对性的安全增强措施,帮助你确保 JWT 在实际应用中的稳健性与安全性。

一、JWT简介

JWT 是一种紧凑的、URL 安全的、基于 JSON 的开放标准(RFC 7519),用于表示在网络环境中传递的声明(Claims)。JWT 由三部分组成:

  • Header(头部):包含令牌的元数据,通常指定签名算法。
  • Payload(载荷):包含声明,可以是用户信息或其他元数据。
  • Signature(签名):通过密钥对前两部分进行加密,确保数据的完整性和真实性。

JWT 的基本结构如下:

<Header>.<Payload>.<Signature>

JWT 常用在以下场景:

  • 身份验证:在用户登录后,服务器会生成 JWT,并将其返回给客户端,客户端将 JWT 存储在本地,后续每次请求时都附带该令牌,服务器根据 JWT 验证用户身份。
  • 信息交换:JWT 可以用于安全地传输信息,因为签名部分能够确保消息的完整性。

二、JWT的安全风险与防护措施

尽管JWT(JSON Web Token)作为一种轻量级的身份认证机制,广泛应用于现代Web开发中,但如果未正确实施,它仍然存在一些潜在的安全风险。本文将分析这些安全风险,并给出相应的防护措施。

2.1 签名算法不安全

JWT的签名部分是确保令牌完整性和防篡改的关键。然而,某些不安全的签名算法可能会被攻击者利用,导致安全漏洞。例如,若服务器错误地选择了 none 算法,JWT的签名部分会被忽略,攻击者就能够伪造有效的JWT。

安全的签名算法

  • RS256:基于RSA算法的非对称加密签名,安全性高,适用于要求较高的场景。
  • HS256:基于HMAC和SHA-256哈希算法的对称签名,性能较好,但要求密钥管理更加严格。

不安全的签名算法

  • none:该算法表示JWT没有签名保护,任何人都可以伪造一个有效的JWT,极易被攻击者利用。

防护措施

  • 始终使用RS256HS256作为签名算法。
  • 严格配置JWT库或框架,避免无意间启用none算法。

2.2 中间人攻击(MITM)

如果JWT在传输过程中没有加密,攻击者可以通过中间人攻击(MITM)截获JWT,从而盗取或篡改其中的数据。这会导致身份冒充或其他恶意操作。

防护措施

  • 使用HTTPS:确保所有API请求通过HTTPS协议进行传输,防止JWT在传输过程中被中间人攻击(MITM)窃取或篡改。
  • 启用SSL Pinning:对于移动端应用,启用SSL Pinning可以确保客户端仅信任特定证书,防止伪造证书绕过HTTPS的加密保护。

实践建议

  • 强制所有API请求使用HTTPS。
  • 对于移动端应用启用SSL Pinning。

2.3 重放攻击

重放攻击指的是攻击者截获并重放一个有效的JWT到服务器,伪造用户请求。若JWT的过期时间设置不合理,重放攻击的风险会增加。

防护措施

  • 设置合理的JWT过期时间:通过设置exp(过期时间)字段来限制JWT的有效期,确保即使JWT被截获,攻击者也只能在短时间内使用它。
  • 使用刷新令牌(Refresh Token)机制:刷新令牌通常具有较长有效期,当JWT过期时,可以通过刷新令牌获取新的JWT。

实践建议

  • 设置合理的过期时间(如30分钟到1小时)。
  • 配合使用刷新令牌机制,并确保刷新令牌的安全存储。

2.4 防止JWT泄露

JWT的Payload部分虽然是经过签名的,但并没有加密,因此,JWT中包含的敏感数据是可以被解码的。为了防止JWT泄露敏感信息,需要在存储和使用JWT时格外小心。

防护措施

  • 使用HttpOnly Cookies存储JWT:将JWT存储在HttpOnly Cookies中,这样即使存在XSS漏洞,JavaScript也无法访问JWT,增强了安全性。
  • 避免存储敏感信息:JWT的Payload部分不应存储敏感信息,如密码、私钥等,因为这些信息是可以通过解码获得的。

实践建议

  • 将JWT存储在HttpOnly Cookies中,而不是LocalStorage或SessionStorage。
  • 避免在JWT的Payload中存储敏感信息。

2.5 密钥管理与轮换

JWT的安全性依赖于签名密钥的安全。如果密钥泄露,攻击者可以伪造有效的JWT。因此,密钥的管理和轮换策略至关重要。

防护措施

  • 使用强密钥管理策略:密钥应具有足够的复杂性,避免使用默认或弱密钥。
  • 定期进行密钥轮换:定期更换密钥,并支持在一段时间内同时使用新旧密钥,以实现平滑过渡。

实践建议

  • 定期更换密钥,并实施密钥轮换策略。
  • 使用硬件安全模块(HSM)或密钥管理服务(KMS)来管理密钥。

2.6 验证JWT的来源和受众

为了防止JWT被恶意伪造,验证JWT的iss(发行者)和aud(受众)字段是十分必要的。确保JWT的来源和目标是可信的,能有效提高系统的安全性。

防护措施

  • 验证issaud字段:在处理JWT时,确保iss字段与预期的发布者一致,aud字段匹配预定的受众,以避免接受无效或恶意的JWT。

实践建议

  • 在每次验证JWT时,确保检查issaud字段。

2.7 监控与审计

定期审计JWT的使用情况并监控JWT的行为,可以帮助及时发现潜在的安全问题。通过分析API请求日志和设置监控系统,可以有效地检测到不寻常的令牌使用模式。

防护措施

  • 日志记录:配置日志记录机制,追踪每个JWT的使用情况,并保存详细的操作日志。
  • 异常行为检测:通过设置监控系统,检测异常的JWT行为,如短时间内大量请求、JWT在不常见的设备上使用等。

实践建议

  • 定期审计JWT的使用日志,确保其符合预期。
  • 设置异常行为检测系统,及时响应可能的安全事件。

三、提高 JWT 安全性的关键措施

JSON Web Token(JWT)广泛用于身份验证和授权,但随着其应用的普及,JWT 的安全性问题也逐渐成为开发者关注的焦点。为了减少潜在的安全风险,并确保 JWT 在实际应用中的安全性,必须采取一些有效的安全措施。本章将介绍几个关键的最佳实践,以提高 JWT 的安全性。

3.1 选择安全的签名算法

JWT 使用签名算法来验证令牌的完整性和真实性。选择合适的签名算法对于保证 JWT 的安全性至关重要。推荐使用公钥加密算法(如 RSA 或 ECDSA)而非对称加密算法(如 HMAC),因为前者能够减少密钥泄露的风险。

  • 推荐算法:

    • RS256(RSA):使用公钥和私钥对进行签名和验证,具有较高的安全性。
    • ES256(ECDSA):基于椭圆曲线加密,提供更强的安全性且性能更优。
  • 避免使用:

    • HS256(HMAC):虽然相对常用,但在某些情况下,如果密钥泄露,将影响整个系统的安全性。

安全建议:

  • 选择如 RS256 或 ES256 等基于公钥的签名算法。
  • 确保密钥长度足够强大(例如,RSA 使用 2048 位及以上)。

3.2 强制使用 HTTPS

JWT 的安全性不仅依赖于令牌本身的设计,还依赖于数据传输的安全性。为了防止 JWT 在传输过程中被窃取或篡改,必须通过 HTTPS 协议加密所有的通信。HTTP 协议容易受到中间人攻击(MITM),因此必须始终使用 HTTPS 进行 JWT 的传输。

配置建议:

  • 强制所有 API 端点仅支持 HTTPS 请求。
  • 配置 HTTP Strict Transport Security(HSTS)头,强制客户端始终通过 HTTPS 连接。

3.3 合理设置 JWT 的过期时间

JWT 的有效期应设置得足够短,以减少令牌被滥用的风险。过期时间是 JWT 安全性的重要防线,避免了长期有效的令牌在被泄露后造成无法挽回的损失。

  • 推荐设置:
    • 设置 JWT 的 exp(过期时间)字段,过期时间应为几个小时到一天之间,具体取决于业务需求。
    • 配合刷新令牌机制(Refresh Token),在 JWT 过期后,通过刷新令牌生成新的 JWT,延长会话生命周期。

安全建议:

  • 定期更新 JWT,避免使用长期有效的令牌。
  • 配合短生命周期的 JWT 和刷新令牌机制来保持会话的安全性。

3.4 安全存储 JWT

JWT 存储的位置决定了其安全性。特别是对于客户端来说,避免将 JWT 存储在容易受到攻击的位置(如 localStoragesessionStorage)至关重要。攻击者可以利用 XSS 攻击窃取存储在这些位置的 JWT。

最佳存储方法:

  • 使用 HttpOnlySecure 属性的 Cookie 存储 JWT,这可以防止客户端 JavaScript 直接访问 JWT,并且确保只有通过 HTTPS 连接才能传输。
  • 避免使用 localStoragesessionStorage 存储 JWT,这些地方容易受到 XSS 攻击的威胁。

安全建议:

  • 将 JWT 存储在安全的 HttpOnly Cookies 中,以提高安全性。
  • 确保 Cookie 设置了 Secure 属性,确保只有在 HTTPS 环境下才能传输。

3.5 密钥管理与轮换

JWT 的签名密钥是其安全性的核心之一。如果密钥泄露,攻击者可以伪造 JWT。因此,密钥管理和定期轮换非常重要。

  • 密钥管理:

    • 使用专业的密钥管理服务(KMS)或硬件安全模块(HSM)来存储和管理密钥。
    • 避免将密钥硬编码在代码中,使用环境变量或安全存储来存储密钥。
  • 定期轮换:

    • 定期更换密钥(例如每 3-6 个月一次),避免长期使用同一密钥。
    • 在密钥轮换时,确保新密钥能够与旧密钥兼容,以避免中断现有会话。

安全建议:

  • 使用 KMS 或 HSM 来管理密钥,避免密钥泄露。
  • 定期轮换密钥,以提高系统的安全性。

3.6 验证 JWT 的 issaud 字段

为了防止伪造的 JWT 被接受,服务器应验证 JWT 的 iss(发行人)和 aud(受众)字段,确保令牌来自合法的发行者,并且是针对正确的受众。

  • 验证 iss 字段: 确保 JWT 的发行者与预期的一致。
  • 验证 aud 字段: 确保 JWT 的受众是正确的,防止令牌被用在不合适的地方。

安全建议:

  • 验证 issaud 字段,以确保 JWT 的合法性。

3.7 日志记录与审计

有效的日志记录是提高 JWT 安全性的重要手段。通过记录所有 JWT 的使用日志,管理员可以及时检测异常行为和潜在的攻击。

  • 日志记录:

    • 记录 JWT 的生成、使用以及过期事件,确保能够追踪 JWT 的生命周期。
    • 包括发起请求的时间、IP 地址、用户代理等信息,帮助管理员识别潜在的恶意活动。
  • 审计和监控:

    • 配合 SIEM(安全信息和事件管理)系统,对异常行为进行实时监控。
    • 对 JWT 劫持、重放攻击等行为进行预警。

安全建议:

  • 启用 JWT 使用日志,确保能够追踪令牌的操作。
  • 使用 SIEM 系统进行异常监控,以提高安全响应能力。

四、异常行为检测

异常行为检测在确保 JWT 安全性方面至关重要。通过深入分析用户请求的行为模式,能够迅速发现并应对潜在的攻击行为,从而有效防止JWT被滥用。以下是该章节的详细内容。

4.1 行为分析与威胁检测

行为分析的基本概念
行为分析通过对用户正常行为的建模和监控,帮助识别和区分正常与异常的行为模式。利用行为分析,可以发现无法通过传统认证方式(如IP地址或设备指纹)轻易识别的攻击行为,增强系统的防护能力。

威胁检测技术

  1. 基于机器学习的异常检测

    • 利用机器学习算法,系统可以自动学习并识别出正常用户的访问模式。一旦系统捕捉到与正常行为显著不同的活动(如短时间内的大量请求、不合常理的请求频率或异常的地理位置),就能标记为潜在威胁。
    • 例如,某个用户在短时间内从多个国家/地区的IP地址发出请求,可能意味着其账号被盗用。
  2. 规则引擎与基于规则的检测

    • 除了机器学习,规则引擎也是行为分析的重要手段。可以根据具体的业务需求设定一些检测规则,例如:
      • 在某一特定时间段内,一个JWT请求的频率超过阈值。
      • JWT在过期时间后仍被使用,可能是重放攻击。
      • 用户在异常的地理位置进行登录(例如,一个用户从中国登录,但几分钟后来自美国的请求也使用了同一个JWT)。
  3. 时序分析与流量模式识别

    • 行为分析不仅仅是基于静态的规则,还可以通过时序数据的方式进行流量模式的识别。例如,某个JWT的请求如果在不合理的时间间隔内出现多次,可能表明存在暴力破解攻击,或是某个JWT被盗用并频繁使用。

实施建议

  • 结合机器学习模型和规则引擎,实时监控和分析JWT的使用行为。
  • 对比用户正常的访问模式,及时检测出异常请求,并触发报警机制。
  • 加强对登录行为、设备指纹以及IP位置等的监控,及时发现账号被盗用的风险。

4.2 如何检测 JWT 滥用

JWT作为一种轻量级的身份验证方式,虽然便利,但也容易成为攻击者滥用的目标。以下是几种常见的滥用方式和如何进行检测的方法:

  1. 重放攻击(Replay Attack)
  • 攻击描述:攻击者截获有效的JWT并在未经授权的情况下再次使用。
  • 检测方式
    • 请求频率分析:如果某个JWT在短时间内被重复使用,尤其是在不同的IP地址或设备上,系统可以检测到这一异常并生成警报。
    • 检测时间戳:通过分析JWT的生成时间和有效期,系统可以检查JWT是否已超时过期,如果超出有效期还继续使用,则判定为重放攻击。
    • Nonce机制:为每个请求生成唯一的nonce(数字随机数),并在请求中验证。这样即使攻击者窃取了JWT,也无法重复使用。
  1. 盗用有效 JWT
  • 攻击描述:攻击者通过XSS(跨站脚本攻击)、CSRF(跨站请求伪造)等手段,获取合法用户的JWT,并冒充用户执行恶意操作。
  • 检测方式
    • 行为分析:通过监控JWT的使用行为,可以发现异常。比如JWT的使用者突然在多个不同设备或IP地址上进行请求,或者短时间内访问大量敏感数据。
    • 多设备监控:如果一个用户账号在多个设备或不同地理位置频繁登录,可能表明该JWT已被盗用。
    • 设备指纹:结合设备指纹技术,可以进一步降低JWT被盗用的风险。如果用户的设备和浏览器信息与之前的登录行为不符,系统可以发出警报。
  1. 不当的过期时间设置
  • 攻击描述:设置过长的JWT过期时间,攻击者可能在JWT未过期时滥用。
  • 检测方式
    • 过期时间监控:定期检查JWT的过期时间,确保JWT的有效期符合系统的安全要求。对于敏感操作,最好使用较短的有效期并结合刷新令牌机制。
    • 刷新令牌机制:使用短期有效的JWT,配合刷新令牌进行身份验证。即使JWT被盗用,攻击者也只能在短时间内滥用。
  1. 认证绕过
  • 攻击描述:攻击者通过修改JWT的签名或内容,尝试绕过认证。
  • 检测方式
    • 签名验证:确保每次JWT请求都经过严格的签名验证,防止JWT在传输过程中被篡改。
    • 内容完整性校验:通过JWT的内容校验(如使用HMAC或RSA加密)确保JWT的有效性。如果JWT内容被篡改,系统应立即识别并拒绝请求。

实施建议

  • 结合行为分析与技术手段(如时间戳、Nonce、设备指纹等)增强对JWT滥用的检测。
  • 设定合理的JWT过期时间,并且对高敏感性操作使用短期有效的JWT,结合刷新令牌机制来降低JWT被滥用的风险。
  • 对所有JWT进行签名验证,并增加请求频率监控、地理位置和设备信息的分析,进一步增强安全防护。

4.3 集成安全日志与监控

安全日志的作用
安全日志记录了用户在系统中进行身份验证、访问资源等操作的详细信息,对于追踪和分析JWT的使用行为至关重要。通过记录JWT的创建、验证过程、过期时间以及与之相关的请求信息,可以帮助快速定位潜在的安全事件。

关键日志内容

  1. JWT生成与验证日志:记录JWT的生成、验证时间、所使用的密钥、是否验证通过等关键信息。
  2. 访问日志:记录JWT请求的具体信息,包括访问的URL、请求方式、来源IP、请求的设备信息等。
  3. 异常行为日志:例如,JWT使用超时、重复使用、非法访问等。

集成监控系统

  1. SIEM(安全信息和事件管理)系统

    • 将JWT的使用日志与其他安全事件集成到SIEM系统中,利用集中式分析和报警机制,帮助及时发现异常行为。
    • 通过配置规则和分析模型,SIEM可以自动检测异常JWT活动,并发送警报给相关的安全团队。
  2. 实时监控与报警

    • 通过集成自动化监控系统,实时监控JWT的使用情况,特别是高风险操作。可以通过日志分析工具(如ELK Stack、Splunk)进行实时数据采集与分析。
    • 配置异常行为触发报警机制,一旦发现滥用行为(如短时间内大量请求、不合常理的登录行为等),立即通知安全团队进行处理。

数据可视化与报告
通过集成数据可视化工具(如Grafana、Kibana),将JWT的使用情况、异常行为日志、威胁检测结果等数据进行图形化展示,帮助安全团队实时掌握系统安全状况,及时应对潜在的安全威胁。

实施建议

  • 集成高效的日志收集与分析工具,记录并分析所有JWT相关操作。
  • 实现与SIEM平台的对接,确保日志的自动化分析与报警。
  • 配置实时监控和报警机制,确保可以在异常行为发生时迅速响应,防止安全漏洞被滥用。

总结

JWT 在现代身份验证和授权中扮演着重要角色,但其安全性容易受到多种因素的影响。为确保 JWT 的安全使用,开发者必须关注以下关键领域:

  1. 选择安全的签名算法:避免使用不安全的 none 算法,推荐使用强加密算法如 RS256ES256,确保令牌的完整性和不可篡改性。
  2. 始终使用 HTTPS:通过 HTTPS 安全传输 JWT,防止中间人攻击(MITM)窃取令牌。
  3. 合理设置过期时间:设定短期有效的 JWT,并结合刷新令牌机制,避免长期有效的令牌被滥用。
  4. 安全存储 JWT:应避免将 JWT 存储在可能受 XSS 攻击影响的地方,建议使用 HttpOnly cookies 来存储敏感令牌。
  5. 密钥管理与轮换:定期更换密钥,并使用专业的密钥管理服务来确保密钥的安全性。
  6. 强化验证与审计机制:对 JWT 进行严格的验证,包括检查 iss(发行者)和 aud(受众)字段,并建立健全的日志记录与审计机制,及时检测异常行为。

通过落实这些最佳实践,开发者可以有效降低 JWT 被滥用、伪造或泄露的风险,确保 Web 应用和 API 的身份验证机制保持高水平的安全性。在实际部署 JWT 时,必须从多个维度入手,加强对安全性的控制与监测,从而为系统的安全和稳定提供坚实保障。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/885653.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Java】-- 异常

1. 异常的概念与体系结构 1.1 异常的概念 在Java中&#xff0c;将程序执行过程中发生的不正常行为称为异常。 public class Test {public static void main(String[] args) {//算术&#xff08;ArithmeticException&#xff09;异常 // int a 5/0; // System.…

从零开始:利用Portainer CE和cpolar搭建NextCloud私有云存储

文章目录 前言1. 在PortainerCE中创建NextCloud容器2. 公网远程访问本地NextCloud容器2.1 内网穿透工具安装3.2 创建远程连接公网地址 3. 固定NextCloud私有云盘公网地址 前言 本文将介绍如何在本地利用Portainer CE的可视化界面创建NextCloud私有云盘容器&#xff0c;并通过c…

[安洵杯 2019]easy_web 详细题解

知识点: 编码转换 命令执行 linux空格_关键字绕过 打开页面 发现url 是 /index.php?imgTXpVek5UTTFNbVUzTURabE5qYz0&cmd 有img参数和cmd参数 cmd参数是没赋值的,随便赋值为123456 页面没有反应 鼠标移动到图片下面时发现有东西,当然直接查看页面源代码也可以发现 尝…

第2章 数据的表示和运算

王道学习 考纲内容 &#xff08;一&#xff09;数制与编码 进位计数制及其相互转换&#xff1b;定点数的编码表示 &#xff08;二&#xff09;运算方法和运算电路 基本运算部件&#xff1a;加法器&#xff1b;算术逻辑单元&#xff08;ALU&#xff09;…

Web3 游戏周报(11.03 - 11.09)

回顾上周的区块链游戏概况&#xff0c;查看 Footprint Analytics 与 ABGA 最新发布的数据报告。 【11.03 - 11.09】Web3 游戏行业动态&#xff1a; Ton Accelerator 推出名为「Synergy」的 500 万美元计划&#xff0c;旨在推动跨链创新&#xff0c;创造 TON 用户与 EVM 网络适应…

数据分析:16s差异分析DESeq2 | Corncob | MaAsLin2 | ALDEx2

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍DESeq2原理计算步骤结果Corncob原理计算步骤结果MaAsLin2原理计算步骤结果ALDEx2原理计算步骤结果加载R包数据链接数据预处理微生物数据样本信息提取物种名称过滤零值保留结果读取…

H.264/H.265播放器EasyPlayer.js无插件H5播放器关于WASM的压缩优化

在当今的Web开发领域&#xff0c;流媒体播放器的性能和效率至关重要&#xff0c;尤其是在处理大型视频文件和高分辨率视频流时。EasyPlayer.js RTSP播放器作为一款先进的流媒体播放器&#xff0c;它在WebAssembly&#xff08;WASM&#xff09;的压缩优化方面表现出色&#xff0…

使用 Python 从 REST URL 下载文件

使用 Python 从 REST URL 下载文件&#xff0c;可以使用 requests 库来简化文件的下载和保存过程。以下是一个示例代码&#xff0c;展示了如何从给定的 REST API 或 URL 下载文件并保存到本地。 1、问题背景 我们需要编写一个脚本&#xff0c;从一个支持 REST URL 的网站下载一…

SpringMVC学习记录(三)之响应数据

SpringMVC学习记录&#xff08;三&#xff09;之响应数据 一、页面跳转控制1、快速返回模板视图2、转发和重定向 二、返回JSON数据1、前置准备2、ResponseBody 三、返回静态资源1、静态资源概念2、访问静态资源 /*** TODO: 一个controller的方法是控制层的一个处理器,我们称为h…

CSDN做样板,教我们如何为新网站引流

CSDN为我们做了个很好的例子&#xff0c;详细请看下图 亮点分析&#xff1a; 1. 未采用硬广在网站上进行引流。减少了给用户在直觉上的造成的反感&#xff1b; 2. 在GitHub的转跳页面中&#xff0c;植入额外的关联网站链接。虽然对用户解决问题没啥鸟用&#xff0c;但是人家能…

什么是头皮EA(剥头皮EA)?

在许多外汇交易者的眼中&#xff0c;剥头皮交易一直是一个神秘的存在。一部分人认为它是一种“外汇禁招”&#xff0c;而另一部分人则认为它比日内交易更容易盈利。那么&#xff0c;外汇剥头皮到底是什么&#xff1f;它与点差之间又有怎样的关系&#xff1f;本文将对剥头皮交易…

华为ensp防火墙配置(纯享版)

文章目录 前言一、拓扑结构二、配置步骤1.路由器配置&#xff08;路由器代替互联网&#xff09;2.server和pc配置3.防护墙配置4.测试 总结 前言 防火墙是生活和项目中不可或缺的一部分&#xff0c;本篇文章对华为的ensp防火墙配置做一个总结。在之前的dhcp配置中有软件的下载地…

区块链技术在数字版权管理中的应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 区块链技术在数字版权管理中的应用 区块链技术在数字版权管理中的应用 区块链技术在数字版权管理中的应用 引言 区块链技术概述 …

docker 拉取MySQL8.0镜像以及安装

目录 一、docker安装MySQL镜像 搜索images 拉取MySQL镜像 二、数据挂载 在/root/mysql/conf中创建 *.cnf 文件 创建容器,将数据,日志,配置文件映射到本机 检查MySQL是否启动成功&#xff1a; 三、DBeaver数据库连接 问题一、Public Key Retrieval is not allowed 问题…

VUE3中Element table表头动态展示合计信息(不是表尾合计)

一、背景 原型上需要对两个字段动态合计,输出摘要信息 原先想到是的Element的 :summary-method,发现不是动态,所以换监听来实现 二、vue代码 <el-table v-model="loading" :data="itemList"><el-table-column label="药品名称" pro…

让直播流量不再是“数字游戏”!本地生活+AI数字人的共赢方式 !

如今&#xff0c;数字化浪潮席卷全球&#xff0c;直播行业竞争愈发激烈。许多人都希望能够将自己直播间所产生的热度实时变现&#xff0c;但总是没有头绪或者是把握不住机会&#xff0c;就这样让直播流量从白白流失。即便是有人使用上创新型智能AI数字人系统&#xff0c;也少有…

jmeter常用配置元件介绍总结之前置处理器、测试片段

系列文章目录 安装jmeter jmeter常用配置元件介绍总结之前置处理器、测试片段 6.前置处理器6.1用户参数6.2取样器超时6.3.测试片段6.4JSR223 PreProcessor6.5.JDBC PreProcessor 6.前置处理器 在取样器请求之前执行的操作&#xff0c;优先级比取样器高&#xff0c;用来处理一些…

前端代码分析题(选择题、分析题)——this指向、原型链分析

this指向 普通函数&#xff1a;this 的指向由调用方式决定&#xff0c;可以是全局对象、调用该函数的对象&#xff0c;或者显式指定的对象。箭头函数&#xff1a;this 的指向在定义时确定&#xff0c;始终继承自外层函数作用域的 this&#xff0c;不会被调用方式影响。 var obj…

Linux下进程链接结构,命令行参数,环境变量

bash 是一种 shell。在 Linux 系统中&#xff0c;当我们在终端输入命令时&#xff0c;通常是在一个 shell 环境下进行的。如果这个 shell 是 bash&#xff0c;那么所有命令行执行的命令都是 bash 的子进程。 1.Linux下进程链接结构 进程链接补充知识&#xff1a; 所有进程都…

Android studio中关于printf和print和println的区别

print:为一般输出&#xff0c;同样不能保留精度格式转化&#xff0c;也不能换行输出&#xff0c;输出需要加上换行符printf:常用于格式转换&#xff0c;但需要注意不是换行输出&#xff0c;只用于精度转换&#xff0c;跟C语言的printf一样的&#xff0c;输出需要加上换行符prin…