<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>林汐的博客</title>
        <link>https://www.somoe.top</link>
        <description>Protect What You Love.</description>
        <lastBuildDate>Fri, 05 Jun 2026 15:11:08 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>zh-CN</language>
        <copyright>All rights reserved 2026, 林汐</copyright>
        <atom:link href="https://www.somoe.top/rss.xml" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[CVE-2026-49975 - HTTP/2 Bomb 拒绝服务攻击]]></title>
            <link>https://www.somoe.top/posts/cve202649975/</link>
            <guid isPermaLink="false">https://www.somoe.top/posts/cve202649975/</guid>
            <pubDate>Thu, 04 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[CVE-2026-49975 HTTP/2 Bomb 漏洞分析]]></description>
            <content:encoded><![CDATA[<h2>前言</h2>
<p>2026年，AI披露了一个严重的安全漏洞 <strong>CVE-2026-49975</strong>，被称为 <strong>&quot;HTTP/2 Bomb&quot;</strong>。该漏洞利用 HTTP/2 协议的两个已知特性——<strong>HPACK 压缩放大请求头</strong>以及<strong>HTTP/2 流控停滞保留服务器资源</strong>——实现了一种极其高效的拒绝服务（DoS）攻击。</p>
<p>更令人担忧的是，这个漏洞影响范围极广，几乎涵盖了所有主流 Web 中间件。</p>
<hr>
<h2>影响范围</h2>
<p>该漏洞影响以下主流 Web 中间件：</p>
<table>
<thead>
<tr>
<th>中间件</th>
<th>受影响版本</th>
<th>状态</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Nginx</strong></td>
<td>所有支持 HTTP/2 的版本</td>
<td>已修复</td>
</tr>
<tr>
<td><strong>Apache HTTP Server</strong></td>
<td>所有支持 HTTP/2 的版本</td>
<td>已修复</td>
</tr>
<tr>
<td><strong>IIS</strong> (Windows Server)</td>
<td>所有版本</td>
<td>暂无补丁</td>
</tr>
<tr>
<td><strong>Envoy</strong></td>
<td>~1.37.2</td>
<td>暂无补丁</td>
</tr>
<tr>
<td><strong>CloudFlare Pingora</strong></td>
<td>所有版本</td>
<td>暂无补丁</td>
</tr>
<tr>
<td>其他 HTTP/2 实现</td>
<td>视具体情况</td>
<td>待确认</td>
</tr>
</tbody>
</table>
<hr>
<h2>攻击原理</h2>
<h3>1. HPACK 压缩放大</h3>
<p>HTTP/2 为了减少带宽消耗，采用了 <strong>HPACK</strong> 压缩算法来压缩请求头。这个算法有一个关键特性：<strong>它允许客户端通过引用之前已经发送过的头部字段来减少重复传输</strong>。</p>
<p>攻击者利用这一特性：</p>
<ol>
<li>发送一个带有<strong>巨大请求头</strong>的请求（比如 1MB），服务器会存储并索引这些头</li>
<li>后续请求只需发送<strong>很短的引用</strong>，就可以让服务器&quot;解压&quot;出巨大的头</li>
<li>攻击者可以发送<strong>数百个</strong>这样的引用请求</li>
</ol>
<p>理论上，这种放大比例可以达到 <strong>1:100 甚至更高</strong>。</p>
<h3>2. HTTP/2 流控停滞</h3>
<p>HTTP/2 的流控机制允许客户端告诉服务器&quot;我要发送多少数据&quot;，但如果客户端只发送请求头而<strong>不发送请求体</strong>，就会导致：</p>
<ul>
<li>服务器分配了内存来缓存这个&quot;未完成&quot;的请求</li>
<li>这个内存<strong>不会立即释放</strong>，会一直保留直到超时</li>
<li>攻击者可以快速发送大量这样的请求，耗尽服务器内存</li>
</ul>
<h3>3. 攻击效果</h3>
<p>结合以上两个特性，攻击者只需要：</p>
<ul>
<li><strong>100Mbps 的带宽</strong></li>
<li><strong>单台普通电脑</strong></li>
<li>约 <strong>10-18 秒</strong></li>
</ul>
<p>就可以让目标服务器<strong>分配数十 GB 的 RAM 资源</strong>，并阻止内存释放，导致服务彻底瘫痪。</p>
<hr>
<h2>实测数据</h2>
<p>安全研究人员在受控环境中进行了测试：</p>
<table>
<thead>
<tr>
<th>中间件</th>
<th>版本</th>
<th>耗尽 32GB 内存所需时间</th>
</tr>
</thead>
<tbody>
<tr>
<td>Envoy</td>
<td>1.37.2</td>
<td>~10 秒</td>
</tr>
<tr>
<td>Apache httpd</td>
<td>2.4.67</td>
<td>~18 秒</td>
</tr>
</tbody>
</table>
<p>这意味着，即使是个人攻击者，也能够轻松地对大型服务器发动有效的 DoS 攻击。</p>
<hr>
<h2>缓解措施</h2>
<h3>1. 关闭 HTTP/2（临时方案）</h3>
<p>如果暂时无法更新到修复版本，可以考虑临时关闭 HTTP/2：</p>
<p><strong>Nginx：</strong></p>
<pre><code class="language-nginx">http2 off;
</code></pre>
<p><strong>Apache：</strong></p>
<pre><code class="language-apache">Protocols h2c http/1.1
</code></pre>
<blockquote>
<p>⚠️ 注意：关闭 HTTP/2 会降低网站性能，建议尽快升级到修复版本。</p>
</blockquote>
<h3>2. 配置请求头限制</h3>
<p><strong>Nginx：</strong></p>
<pre><code class="language-nginx">server {
    # 限制请求头大小
    client_header_buffer_size 4k;
    large_client_header_buffers 4 8k;
    
    # 限制请求头数量
    http2_max_fields 256;
    http2_max_field_size 8k;
}
</code></pre>
<p><strong>Apache：</strong></p>
<pre><code class="language-apache">&lt;IfModule mod_http2.c&gt;
    H2MaxSession 1000
    H2MaxStream 100
&lt;/IfModule&gt;
</code></pre>
<h3>3. 限制单个连接的请求数</h3>
<p>限制一个连接可以发送的请求数量，防止单个连接耗尽资源。</p>
<h3>4. 启用连接超时</h3>
<p>设置合理的超时时间，及时释放未完成的请求占用的资源。</p>
<hr>
<h2>各大厂商响应</h2>
<h3>已修复</h3>
<ul>
<li><strong>Nginx</strong>：已发布安全更新，建议用户升级到最新版本</li>
<li><strong>Apache HTTP Server</strong>：已发布安全更新，建议用户升级到最新版本</li>
</ul>
<h3>待修复</h3>
<ul>
<li><strong>IIS</strong>：微软尚未发布官方补丁，建议先使用临时缓解措施</li>
<li><strong>Envoy</strong>：暂无补丁，建议关注官方安全公告</li>
<li><strong>CloudFlare Pingora</strong>：暂无补丁，CloudFlare 正在紧急处理中</li>
</ul>
<hr>
<h2>建议</h2>
<ol>
<li><strong>立即检查</strong>：确认你正在使用的 Web 中间件版本和配置</li>
<li><strong>升级补丁</strong>：如果厂商已发布修复版本，立即升级</li>
<li><strong>临时缓解</strong>：如果暂时无法升级，务必启用请求头限制等临时缓解措施</li>
<li><strong>持续关注</strong>：关注各厂商的官方安全公告，及时获取最新信息</li>
<li><strong>监控告警</strong>：部署内存使用监控，设置告警阈值，及时发现异常</li>
</ol>
<hr>
<h2>参考链接</h2>
<ul>
<li><a href="https://nginx.org/en/security_advisories.html">Nginx 安全公告</a></li>
<li><a href="https://httpd.apache.org/security_report.html">Apache HTTP Server 安全公告</a></li>
<li><a href="https://tools.ietf.org/html/rfc7541">HPACK 规范 (RFC 7541)</a></li>
<li><a href="https://tools.ietf.org/html/rfc7540">HTTP/2 流控机制 (RFC 7540)</a></li>
</ul>
<hr>
<p><em>本篇文章将持续更新，欢迎关注后续报道。</em></p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[魔方业务系统验证码聚合扩展]]></title>
            <link>https://www.somoe.top/posts/v10capj/</link>
            <guid isPermaLink="false">https://www.somoe.top/posts/v10capj/</guid>
            <pubDate>Thu, 04 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[魔方业务系统验证码聚合扩展]]></description>
            <content:encoded><![CDATA[<h1>CollectionCaptcha - 验证码集合插件</h1>
<p><a href="https://github.com/FuRuiORG/collection_captcha/">https://github.com/FuRuiORG/collection_captcha/</a></p>
<blockquote>
<p>支持 Geetest v4、Cloudflare Turnstile、hCAPTCHA 三种验证码服务的统一接入插件</p>
</blockquote>
<p><strong>作者</strong>：RuiNexus<br>
<strong>版本</strong>：1.2.0<br>
<strong>框架</strong>：魔方业务系统（ThinkPHP）<br>
<strong>目录</strong>：<code>public/plugins/captcha/collection_captcha/</code></p>
<hr>
<h2>功能特性</h2>
<ul>
<li><strong>三合一验证码</strong>：Geetest v4（极验）、Turnstile（Cloudflare）、hCAPTCHA 一键切换</li>
<li><strong>Turnstile 高级配置</strong>：支持托管/非交互式/不可见三种 Widget 模式，以及 always/execute/interaction-only 三种外观模式</li>
<li><strong>Single-use Token 设计</strong>：所有验证码 token 仅在登录提交时消费一次，避免双重验证失败</li>
<li><strong>调试日志</strong>：三种验证码均内置可开关的调试日志，便于排查问题</li>
<li><strong>前台/后台双端支持</strong>：后台管理登录 + 前台用户登录统一适配</li>
</ul>
<h2>前端展示</h2>
<img width="1912" height="922" alt="image" src="https://img.scdn.io/i/6a218c99aad85_1780583577.webp" />
<img width="1912" height="922" alt="image" src="https://img.scdn.io/i/6a218c8339a78_1780583555.webp" />
<img width="1912" height="922" alt="image" src="https://img.scdn.io/i/6a218cba26917_1780583610.webp" />
<h2>文件结构</h2>
<pre><code>collection_captcha/
├── CollectionCaptcha.php          # 插件入口（注册钩子、版本信息）
├── config.php                     # 后台配置表单定义
├── captcha-watchdog.js            # 前端超时/异常监控脚本
├── controller/
│   └── IndexController.php        # HTTP 接口（verify / refresh）
├── logic/
│   ├── CollectionCaptchaLogic.php # 核心调度器（按类型分发）
│   ├── GeetestLogic.php           # Geetest v4 逻辑
│   ├── TurnstileLogic.php         # Turnstile 逻辑
│   └── HcaptchaLogic.php          # hCAPTCHA 逻辑
└── lang/
    ├── zh-cn.php                  # 简体中文语言包
    ├── en-us.php                  # 英文语言包
    └── zh-hk.php                  # 繁体中文语言包
</code></pre>
<h2>安装与配置</h2>
<h3>1. 安装</h3>
<p>将 <code>collection_captcha</code> 目录放入 <code>public/plugins/captcha/</code> 下，在后台插件管理中安装并启用。</p>
<h3>2. 后台配置</h3>
<p>进入 <strong>插件设置</strong> → <strong>CollectionCaptcha</strong>：</p>
<table>
<thead>
<tr>
<th>配置项</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>验证码类型</td>
<td>选择 <code>geetest</code> / <code>turnstile</code> / <code>hcaptcha</code>，默认 Geetest</td>
</tr>
<tr>
<td>各服务密钥</td>
<td>填写对应平台的 Site Key / Secret Key / Captcha ID 等</td>
</tr>
</tbody>
</table>
<h4>Turnstile 专属选项</h4>
<table>
<thead>
<tr>
<th>配置项</th>
<th>可选值</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>Widget 模式</td>
<td>managed / non-interactive / invisible</td>
<td>托管模式推荐，自动选择交互策略</td>
</tr>
<tr>
<td>外观模式</td>
<td>always / execute / interaction-only</td>
<td>interaction-only 已验证访客跳过质询</td>
</tr>
<tr>
<td>Widget 尺寸</td>
<td>normal / flexible / compact</td>
<td>标准 / 自适应 / 紧凑</td>
</tr>
</tbody>
</table>
<h2>验证流程</h2>
<pre><code>用户操作 → 前端 Widget 验证 → 获取 Token → captchaCheckSuccsss() 写入表单
                                                    ↓
                              用户提交表单 → 框架 check_captcha()
                                                    ↓
                          插件 verify() → 对应平台 API 二次验证（唯一消费点）
                                                    ↓
                                          返回 status:200/400
</code></pre>
<p><strong>关键设计</strong>：Token 不在前端提前 AJAX 验证，而是直接随表单提交给后端，由框架在登录时统一做唯一一次服务端校验。这避免了 single-use token 的双重消费问题。</p>
<h2>支持的验证码服务</h2>
<h3>Geetest v4（极验）</h3>
<ul>
<li><strong>文档</strong>：<a href="https://docs.geetest.com/gt4/apirefer/api/web">https://docs.geetest.com/gt4/apirefer/api/web</a></li>
<li><strong>渲染方式</strong>：<code>initGeetest4()</code> API 初始化</li>
<li><strong>二次验证</strong>：HMAC-SHA256 签名 + validate 接口</li>
<li><strong>前台检测</strong>：轮询 <code>setInterval</code> 检测验证结果</li>
<li><strong>所需配置</strong>：Captcha ID、Captcha Key</li>
</ul>
<h3>Cloudflare Turnstile</h3>
<ul>
<li><strong>文档</strong>：<a href="https://developers.cloudflare.com/turnstile/">https://developers.cloudflare.com/turnstile/</a></li>
<li><strong>渲染方式</strong>：显式渲染（<code>render=explicit</code> + <code>turnstile.render()</code>）</li>
<li><strong>二次验证</strong>：siteverify API（POST JSON）</li>
<li><strong>Widget 模式</strong>：managed / non-interactive / invisible</li>
<li><strong>外观模式</strong>：always / execute / interaction-only</li>
<li><strong>所需配置</strong>：Site Key、Secret Key</li>
</ul>
<h3>hCAPTCHA</h3>
<ul>
<li><strong>文档</strong>：<a href="https://docs.hcaptcha.com/">https://docs.hcaptcha.com/</a></li>
<li><strong>渲染方式</strong>：隐式渲染（<code>data-*</code> 属性自动渲染）</li>
<li><strong>二次验证</strong>：siteverify API（POST form-urlencoded）</li>
<li><strong>所需配置</strong>：Site Key、Secret Key</li>
</ul>
<h2>调试日志</h2>
<p>各 Logic 类顶部均有 <code>DEBUG_LOG</code> 常量，设为 <code>true</code> 即可启用：</p>
<pre><code class="language-php">// GeetestLogic.php / HcaptchaLogic.php / TurnstileLogic.php
const DEBUG_LOG = false;  // 改为 true 启用
</code></pre>
<p>日志文件位置：</p>
<ul>
<li>Geetest：<code>collection_captcha/geetest_debug.log</code></li>
<li>Turnstile：<code>collection_captcha/turnstile_debug.log</code></li>
<li>hCAPTCHA：<code>collection_captcha/hcaptcha_debug.log</code></li>
</ul>
<p>日志记录内容：请求参数、API 返回结果、错误详情等。</p>
<h2>API 接口</h2>
<table>
<thead>
<tr>
<th>方法</th>
<th>路径</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>POST</td>
<td><code>/captcha/collection_captcha/index/verify</code></td>
<td>验证码校验</td>
</tr>
<tr>
<td>GET</td>
<td><code>/captcha/collection_captcha/index/refresh</code></td>
<td>刷新验证码（预留）</td>
</tr>
</tbody>
</table>
<h2>版本历史</h2>
<table>
<thead>
<tr>
<th>版本</th>
<th>变更说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>1.2.0</td>
<td>Turnstile 支持托管/非交互式/不可见切换及 appearance 模式；修复 single-use token 双重消费问题；统一三个插件的代码风格和调试日志</td>
</tr>
<tr>
<td>1.1.0</td>
<td>新增 Turnstile 支持</td>
</tr>
<tr>
<td>1.0.0</td>
<td>初始版本，支持 Geetest v4 和 hCAPTCHA</td>
</tr>
</tbody>
</table>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[智简魔方系统对接多用户挂机宝（魔方财务/魔方业务系统V10）]]></title>
            <link>https://www.somoe.top/posts/zjmfdyh1/</link>
            <guid isPermaLink="false">https://www.somoe.top/posts/zjmfdyh1/</guid>
            <pubDate>Wed, 03 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[智简魔方系统对接多用户挂机宝（魔方财务/魔方业务系统V10）]]></description>
            <content:encoded><![CDATA[<p><strong>我的基友（xiaolqy）在 GitHub 上传了一个 <a href="https://github.com/xiaolqys/zjmfyh">新版的对接多用户挂机宝插件</a></strong></p>
<p><strong>目前功能有：</strong></p>
<ul>
<li>删除账号</li>
<li>取消账号</li>
<li>自动开通</li>
<li>自动给予远程桌面权限</li>
</ul>
<p><strong>支持：魔方财务 / 魔方业务系统 V10</strong></p>
<p><strong>本插件受控全部，禁止售卖，若有人开源圈你，请你骂他全家身体健康</strong></p>
<p><strong>插件作者联系方式：xiaolqy@qq.com / QQ：2307858551</strong></p>
<h2>硬件与系统要求</h2>
<h3>硬件要求</h3>
<ul>
<li><strong>CPU</strong>：没有特殊要求</li>
<li><strong>内存</strong>：建议至少 <strong>4GB</strong>，因为多用户产生的临时文件可能会较大</li>
<li><strong>磁盘</strong>：建议 <strong>50GB 以上可用空间</strong>（也可以不用），但多用户产生的临时文件可能会多</li>
<li><strong>网络</strong>：支持公网或者 NAT 转发（若是家庭内网，请映射一个 FRP 出来）</li>
</ul>
<h3>系统要求</h3>
<ul>
<li><strong>操作系统</strong>：Windows 2016 系统以上（2003～2012 请自行编译源码）</li>
<li><strong>网络配置</strong>：确保服务器有 <strong>静态 IP</strong> 或单公网 NAT 转发功能</li>
<li><strong>财务系统</strong>：魔方财务系统 / 魔方业务系统 V10</li>
</ul>
<hr>
<h2>一、受控端的部署</h2>
<p>本功能没有特殊的要求，需服务商支持。</p>
<h3>下载</h3>
<p>下载地址（在下载下来的最新的压缩包里面找到你要用的）</p>
<p><a href="https://moelx.lanzn.com/b00rp0cd1a">https://moelx.lanzn.com/b00rp0cd1a</a></p>
<p>密码：bmi6</p>
<h3>上传受控端</h3>
<p>上传受控端 exe 或者 py 文件（需已安装 Python 补环境的情况下才可以使用 py）</p>
<ol>
<li>运行受控文件</li>
<li>复制令牌 API</li>
<li>放行防火墙和服务商的安全组（本服务运行在 5000 端口上），需在服务商 NAT 转发，当然，纯公网就可以了。为了保障您的安全，请您设置安全组放行只你们财务的 IP</li>
</ol>
<h3>多用户使用</h3>
<ol>
<li><strong>Windows Server 系统使用</strong>：服务器管理器 → 点击远程桌面服务 → 勾选远程桌面会话主机 → gpedit.msc 更改远程桌面限制连接数量</li>
<li><strong>Windows 家庭版的用户</strong>需使用 RDPwarp，然后修改 gpedit.msc</li>
</ol>
<h2>二、主控端的部署</h2>
<p>给 V10 用户：为确保正常请在 10.6.9 魔方 V10 版本以上进行。</p>
<ol>
<li>
<p>使用 SSH/FTP 上传到魔方财务系统 / 魔方业务系统目录服务器模块</p>
</li>
<li>
<p><strong>魔方财务服务器接口填法</strong></p>
</li>
</ol>
<p>请将财务模块放在 <code>public/plugins/server</code> 目录下</p>
<pre><code>(其他默认)
名称：随便
IP地址：你受控的IP
对接模块：accountpro财务系统对接模块
主机名：远程桌面地址
用户名：admin
密码：你受控显示的API令牌
端口：公网用户5000，nat挂机宝用户填写外部端口
</code></pre>
<ol start="3">
<li><strong>魔方业务系统 V10 服务器接口填法</strong></li>
</ol>
<p>请将 V10 模块放在路径：<code>public/plugins/server/idcsmart_common/module</code> 目录下</p>
<pre><code>(其他默认)
名称：随便
IP地址：你受控的IP：端口（127.0.0.1:5000）
对接模块：accountpro业务系统对接模块
主机名：不填
用户名：admin
密码：你受控显示的API令牌
端口：不填
连接方式：不使用SSL
（配置产品的时候记得填远程桌面地址）
</code></pre>
<ol start="4">
<li>
<p>测试连接，连接不上会提示原因（V10 不会提示，请自行排查）</p>
</li>
<li>
<p>测试开通，然后就大功告成！</p>
</li>
</ol>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[ZJMF修复通过接口获取对接上游信息的轻量级安全补丁]]></title>
            <link>https://www.somoe.top/posts/zjmfsy1/</link>
            <guid isPermaLink="false">https://www.somoe.top/posts/zjmfsy1/</guid>
            <pubDate>Wed, 03 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[ZJMF修复通过接口获取对接上游信息的轻量级安全补丁]]></description>
            <content:encoded><![CDATA[<h2>前言</h2>
<p><strong>本教程基于 <a href="https://github.com/FuRuiORG/ZJMF-noupstream">https://github.com/FuRuiORG/ZJMF-noupstream</a> 编写</strong></p>
<p>魔方财务系统（ZJMF）存在一个安全漏洞：/api/pr......接口会返回 upstream_product_shopping_url 等上游敏感信息。</p>
<p><strong>本补丁功能特性</strong></p>
<blockquote>
<p>精准拦截-自动识别并隐藏15个上游敏感字段
零配置-即插即用，无需修改业务代码
覆盖全局-基于输出缓冲，拦截所有JSON响应
深度清理-梯度下降数据结构
兼容压缩-自动处理Gzip/Deflate压缩响应
性能-轻量级实现，对性能影响 ≤1ms
安全可靠-不影响正常业务逻辑</p>
</blockquote>
<h2>下载</h2>
<p>下载（在下载下来的最新的压缩包里面找到你要用的）</p>
<p><a href="https://moelx.lanzn.com/b00rp0cd1a">https://moelx.lanzn.com/b00rp0cd1a</a></p>
<p>密码：bmi6</p>
<h2>开始实践</h2>
<h3>方法一：直接复制（推荐）</h3>
<p>下载配置好的 0-index.php 文件，包含完整的拦截器导入代码，修改文件名为 <code>index.php</code></p>
<pre><code class="language-php">index.php
</code></pre>
<ol>
<li><strong>复制 upstream_hide.php 到项目根目录</strong></li>
</ol>
<p><img src="https://img.scdn.io/i/6a20348ee8c84_1780495502.webp" alt="复制 upstream_hide.php"></p>
<ol start="2">
<li><strong>用刚刚下载并且改名的 index.php 替换掉你的 public 下的 index.php</strong></li>
</ol>
<p><img src="https://img.scdn.io/i/6a2034ab94e41_1780495531.webp" alt="替换 index.php"></p>
<p><strong>注意：替换前请备份原有的 public/index.php 文件</strong></p>
<h3>方法二：手动修改</h3>
<blockquote>
<p>如果需要保留原有 index.php 的自定义配置，可以手动添加代码：</p>
</blockquote>
<pre><code class="language-php">your-zjmf-installation/
├── app/
├── public/
│   └── index.php          ← 修改此文件
├── upstream_hide.php      ← 新增此文件
├── data/
└── ...
</code></pre>
<ol>
<li>将 upstream_hide.php 放置在魔方财务系统根目录：</li>
</ol>
<p><img src="https://img.scdn.io/i/6a20348ee8c84_1780495502.webp" alt="放置 upstream_hide.php"></p>
<ol start="2">
<li>编辑 public/index.php，在 require base.php 后添加一行代码：</li>
</ol>
<p><img src="https://img.scdn.io/i/6a2034ab94e41_1780495531.webp" alt="编辑 index.php"></p>
<pre><code class="language-php">// 加载基础文件
require CMF_ROOT . 'vendor/thinkphp/base.php';

// 加载上游信息隐藏拦截器 (ZJMF-noupstream)
require CMF_ROOT . 'upstream_hide.php';  // ← 新增这行

// 执行应用并响应
Container::get('app', [APP_PATH])-&gt;run()-&gt;send();
</code></pre>
<p><img src="https://img.scdn.io/i/6a2034f22c6c5_1780495602.png" alt="编辑完成"></p>
<h3>验证安装</h3>
<p>访问任意产品详情API，检查返回数据，预期结果：</p>
<pre><code class="language-json">{
  &quot;api_type&quot;: &quot;normal&quot;,
  &quot;upstream_pid&quot;: 0,
  &quot;upstream_product_shopping_url&quot;: null
}
</code></pre>
<h2>技术原理</h2>
<p><img src="https://img.scdn.io/i/6a20350a4f80b_1780495626.webp" alt="技术原理"></p>
<h2>压缩处理机制</h2>
<p>针对服务器开启Gzip压缩的场景：</p>
<pre><code class="language-php">function upstreamHideTryDecompress($buffer) {
    // 检测Gzip格式 (0x1f 0x8b)
    if ($b0 === 0x1f &amp;&amp; $b1 === 0x8b) {
        return @gzdecode($buffer);
    }
    
    // 检测Zlib格式 (0x78 0x01/5e/9c)
    if ($b0 === 0x78 &amp;&amp; ...) {
        return @gzuncompress($buffer);
    }
    
    // PHP版本兼容处理
    if (version_compare(PHP_VERSION, '7.4', '&lt;')) {
        // PHP 7.2-7.3: 使用inflate_init (如果可用)
        return @inflate_add(@inflate_init(...), $buffer);
    } else {
        // PHP 7.4+: 直接使用gzinflate
        return @gzinflate($buffer);
    }
}
</code></pre>
<h2>常见问题</h2>
<h3>Q1: 是否会影响网站性能？</h3>
<p>答：影响极小。性能损耗主要来自：</p>
<ul>
<li>JSON解析：≤ 0.5ms</li>
<li>数组遍历：≤ 0.3ms（取决于数据量）</li>
<li>重新编码：≤ 0.2ms</li>
<li>总耗时 ≤ 1ms，对用户体验无感知影响</li>
</ul>
<h3>Q2: 会影响非API请求吗？</h3>
<p>答：不会。脚本会智能检测：</p>
<ul>
<li>仅处理 <code>{...}</code> 或 <code>[...]</code> 格式的JSON响应</li>
<li>自动跳过HTML页面、图片、CSS/JS静态资源</li>
<li>如果响应不是有效JSON，原样返回不做任何修改</li>
</ul>
<h3>Q3: 如何临时禁用？</h3>
<p>答：注释掉 public/index.php 中的引入行即可：</p>
<pre><code class="language-php">// require CMF_ROOT . 'upstream_hide.php';  // 临时禁用
</code></pre>
<p>要用的时候删除注释就可以了</p>
<h3>Q4: 能否自定义要隐藏的字段？</h3>
<p>答：可以！编辑 upstream_hide.php 中的两个配置数组：</p>
<pre><code class="language-php">// 添加新的隐藏字段
$upstreamHideFields[] = 'your_custom_field';

// 定义替换值
$upstreamReplaceValues['your_custom_field'] = 'safe_value';
</code></pre>
<h3>Q5: 支持哪些API接口？</h3>
<p>答：由于基于全局输出缓冲，理论上支持所有返回JSON的接口，包括但不限于：</p>
<ul>
<li><code>/api/product/prodetail</code> - 产品详情</li>
<li>以及其他所有API端点</li>
</ul>
<h3>Q6: 数据库中的原始数据会被修改吗？</h3>
<p>答：不会。本工具仅在输出层进行拦截，不修改任何数据库记录或源代码逻辑。停止使用后，系统完全恢复原状。</p>
<h2>致谢</h2>
<ul>
<li>感谢魔方财务（ZJMF）团队提供的优秀主机销售系统</li>
<li>感谢所有贡献者和使用者</li>
<li>感谢开源社区的反馈和建议</li>
<li>感谢 FuRuiORG</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[神人墙]]></title>
            <link>https://www.somoe.top/posts/sjq/</link>
            <guid isPermaLink="false">https://www.somoe.top/posts/sjq/</guid>
            <pubDate>Wed, 01 Jan 2020 00:00:00 GMT</pubDate>
            <description><![CDATA[神人墙]]></description>
            <content:encoded><![CDATA[<p>更新日期：2026/5/30</p>
<p>以下是收录的一些神人（物）</p>
<h2>沈毅云</h2>
<h3>自己有机房</h3>
<p>他家云不用实名，他的上游找他，好心提醒一下，谁知这人说自己有机房。</p>
<p><img src="https://i.9178000.xyz/file/AgACAgUAAyEGAATJkmThAAM7afiY0X4nAAEBrsCVTnRMgj-a4EAXAAKxFGsbeRLIV16qIIJaT3FfAQADAgADeAADOwQ.png" alt="自己有机房"></p>
<h3>用魔方盗版</h3>
<p>用魔方财务的盗版还不让人说了，没有道理非要找道理，我也是无话可说。</p>
<p><img src="https://i.9178000.xyz/file/AgACAgUAAyEGAATJkmThAAM8afiZmYUhXOQmYoNiqygzq9TnCdsAArUUaxt5EshXN6yn26jJcLkBAAMCAAN4AAM7BA.png" alt="用魔方盗版"></p>
<h3>定制 VPN 系统</h3>
<p><img src="https://i.9178000.xyz/file/AgACAgUAAyEGAATJkmThAAM9afibmpw1avq1D-JUU3Fgw3C0fBoAArwUaxt5EshX6u0OXhU5vcEBAAMCAAN3AAM7BA.png" alt="定制VPN系统"></p>
<p>这家伙也不知道多大，快开智了吧。</p>
<p>（这里是我开玩笑问他是不是还要自定义 IP）</p>
<h3>拒绝投资</h3>
<p><img src="https://i.9178000.xyz/file/AgACAgUAAyEGAATJkmThAAM-afidnsRx-FLQILjo4blN_9Dz66gAAsUUaxt5EshXETSwulGLXP8BAAMCAAN4AAM7BA.png" alt="拒绝投资"></p>
<p>他给我朋友说拒绝投资？？？需要他投资吗？？？</p>
<h3>VPN 节点</h3>
<p><img src="https://i.9178000.xyz/file/AgACAgUAAyEGAATJkmThAAM_afieBiUDlvmwzH41PIaWgGn_M0sAAsYUaxt5EshXkoi_qni_OigBAAMCAANtAAM7BA.png" alt="VPN节点"></p>
<p>继前文（他们一个团队），他们不是说自己有机房吗？怎么自己不搞。</p>
<h3>家里云</h3>
<p><img src="https://i.9178000.xyz/file/AgACAgUAAyEGAATJkmThAANAafifH17rJlaQMatpatJe2XM8agoAAsgUaxt5EshXHgRuC_eEzS4BAAMCAANtAAM7BA.png" alt="家里云"></p>
<p>不是自己有机房吗？怎么还家里云？
还有，自己家里有公网 IP 吗？难不成 FRP？？？</p>
<h3>无法评价</h3>
<p><img src="https://i.9178000.xyz/file/AgACAgUAAyEGAATJkmThAANBafih56IjA-_xlHzVN6Aowjr-5iMAAswUaxt5EshXsKnvY2AvAR8BAAMCAAN4AAM7BA.png" alt="无法评价"></p>
<h3>自相矛盾</h3>
<p><img src="https://i.9178000.xyz/file/AgACAgUAAyEGAATJkmThAANCafio24RrtskzCRQ-4lCX686IPWkAAg8Vaxt5EshXG6EWA5dQqakBAAMCAANtAAM7BA.png" alt="自相矛盾1"></p>
<p><img src="https://i.9178000.xyz/file/AgACAgUAAyEGAATJkmThAANEafipCgKmyDO-hSK92wvYuttYU9UAAhEVaxt5EshXLE-ipBqUuUEBAAMCAAN4AAM7BA.png" alt="自相矛盾2"></p>
<p>自己跟自己抵触，然后自己说自己。</p>
<p><img src="https://i.9178000.xyz/file/AgACAgUAAyEGAATJkmThAANFafipSzEuAYiFSMhzVSl6zb_bSCUAAhMVaxt5EshXisdM-kIsY80BAAMCAAN4AAM7BA.png" alt="自相矛盾3"></p>
<h3>偷吃数据这一块</h3>
<p><img src="https://i.9178000.xyz/file/AgACAgUAAyEGAATJkmThAANGafirJxtFWpbC0wvbbWW0JpiSrz8AAhcVaxt5EshXw57oR73Ik3ABAAMCAAN3AAM7BA.png" alt="偷吃数据"></p>
<p>极品，偷吃数据。</p>
<h3>海外营业执照</h3>
<p><img src="https://i.9178000.xyz/file/AgACAgUAAyEGAATJkmThAANHafirV5SbYhfPy63aDx634iHKH2wAAhgVaxt5EshXNljxKuAPXmwBAAMCAAN3AAM7BA.png" alt="海外营业执照"></p>
<h3>意见不统一</h3>
<p><img src="https://i.9178000.xyz/file/AgACAgUAAyEGAATJkmThAANIafirlBALeLx6xIql3eDoBrL_K_UAAhkVaxt5EshXPiBJlRyCuAgBAAMCAAN4AAM7BA.png" alt="意见不统一1"></p>
<p><img src="https://i.9178000.xyz/file/AgACAgUAAyEGAATJkmThAAOlagkFATgU5zNAxbMK0LVuIo6S_p0AAjQQaxtEMUlUSKQL6lC6BAABAQADAgADdwADOwQ.png" alt="意见不统一2"></p>
<h3>一些补充</h3>
<p>下面的有点乱，将就看。</p>
<p><img src="https://img.scdn.io/i/6a1a39f8a98cd_1780103672.webp" alt="补充1">
<img src="https://img.scdn.io/i/6a1a39f6d8f76_1780103670.webp" alt="补充2">
<img src="https://img.scdn.io/i/6a1a39f66aa4a_1780103670.webp" alt="补充3">
<img src="https://img.scdn.io/i/6a1a39f5a2fd5_1780103669.webp" alt="补充4">
<img src="https://img.scdn.io/i/6a1a39f11065e_1780103665.webp" alt="补充5">
<img src="https://img.scdn.io/i/6a1a39f099ecb_1780103664.webp" alt="补充6">
<img src="https://img.scdn.io/i/6a1a39eeb7358_1780103662.webp" alt="补充7">
<img src="https://img.scdn.io/i/6a1a39eb39ae9_1780103659.webp" alt="补充8">
<img src="https://img.scdn.io/i/6a1a39e900477_1780103657.webp" alt="补充9">
<img src="https://img.scdn.io/i/6a1a39dac6c89_1780103642.webp" alt="补充10">
<img src="https://img.scdn.io/i/6a1a39d33e074_1780103635.webp" alt="补充11">
<img src="https://img.scdn.io/i/6a1a39d0eece3_1780103632.webp" alt="补充12">
<img src="https://img.scdn.io/i/6a1a39ce5fca3_1780103630.webp" alt="补充13">
<img src="https://img.scdn.io/i/6a1a39cbb17c6_1780103627.webp" alt="补充14">
<img src="https://img.scdn.io/i/6a1a39c9c522c_1780103625.webp" alt="补充15">
<img src="https://img.scdn.io/i/6a1a39c855339_1780103624.webp" alt="补充16">
<img src="https://img.scdn.io/i/6a1a39c72a910_1780103623.webp" alt="补充17">
<img src="https://img.scdn.io/i/6a1a39c59a97d_1780103621.webp" alt="补充18">
<img src="https://img.scdn.io/i/6a1a39c4dd863_1780103620.webp" alt="补充19"></p>
<h2>苏奈</h2>
<p><img src="https://i.9178000.xyz/file/AgACAgUAAyEGAATJkmThAAOeagkDyGCyz4Y1FkBq82tOhlygTCEAAisQaxtEMUlUWBp6NNgncBsBAAMCAANtAAM7BA.png" alt="苏奈1">
<img src="https://i.9178000.xyz/file/AgACAgUAAyEGAATJkmThAAOfagkD8wYloV1Npf-GFcinBH8VqdsAAiwQaxtEMUlU5P0ajvJgLGQBAAMCAAN4AAM7BA.png" alt="苏奈2">
<img src="https://i.9178000.xyz/file/AgACAgUAAyEGAATJkmThAAOgagkEH0aQNTOPE5SwvN2AetT65jwAAi0QaxtEMUlUD3n3WNTQsIcBAAMCAAN5AAM7BA.png" alt="苏奈3"></p>
<p>这是什么玩意。</p>
<p><img src="https://i.9178000.xyz/file/AgACAgUAAyEGAATJkmThAAOhagkEOow0xnGR6yF5W5sm1h6gqzcAAi4QaxtEMUlUo113_6SK5yMBAAMCAANtAAM7BA.png" alt="苏奈4">
<img src="https://i.9178000.xyz/file/AgACAgUAAyEGAATJkmThAAOiagkEZWuIzSJJhY6GbyVm2I_Z6d8AAjAQaxtEMUlUhZ3wck_d3I0BAAMCAANtAAM7BA.png" alt="苏奈5">
<img src="https://i.9178000.xyz/file/AgACAgUAAyEGAATJkmThAAOjagkEmJm0FxLusmb_H8pV_vuvU-kAAjIQaxtEMUlUgyXScv-UihgBAAMCAANtAAM7BA.png" alt="苏奈6">
<img src="https://i.9178000.xyz/file/AgACAgUAAyEGAATJkmThAAOkagkE0j45Ari9zYmLuJye9uFP6zIAAjMQaxtEMUlUEe86bCG-QuUBAAMCAANtAAM7BA.png" alt="苏奈7"></p>
<h2>宝藏男孩延轩吖</h2>
<p>评价：猎如奇，首先这个名字就绷不住了。。。。</p>
<p><img src="https://img.cdn1.vip/i/6a18543c069bc_1779979324.webp" alt="宝藏男孩延轩吖"></p>
<h2>东北撸串大哥</h2>
<p><img src="https://i.9178000.xyz/file/BQACAgUAAyEGAATJkmThAAOrah2CAxZiCY_CpLPdD4e7NMye40kAAiwbAAL05fBUsfePv5lR9V07BA.png" alt="东北撸串1">
<img src="https://i.9178000.xyz/file/AgACAgUAAyEGAATJkmThAAOsah2CdjJJalL3k-fzKfbZpgS_BnEAAg8Paxv05fBUBm65ztbJH0IBAAMCAAN3AAM7BA.png" alt="东北撸串2"></p>
]]></content:encoded>
        </item>
    </channel>
</rss>