<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Citation on Tarragon</title><link>https://tarrragon.github.io/blog/tags/citation/</link><description>Recent content in Citation on Tarragon</description><generator>Hugo -- gohugo.io</generator><language>zh-TW</language><copyright>Tarragon (CC BY 4.0)</copyright><lastBuildDate>Fri, 01 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://tarrragon.github.io/blog/tags/citation/index.xml" rel="self" type="application/rss+xml"/><item><title>Security 標準引用的時效性與精確度</title><link>https://tarrragon.github.io/blog/report/security-citation-currency-and-precision/</link><pubDate>Fri, 01 May 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/report/security-citation-currency-and-precision/</guid><description>&lt;h2 id="核心原則">核心原則&lt;/h2>
&lt;p>&lt;strong>資安標準引用不是「這條 control 寫在 X 文件」、是「這條 control 在 X 版本 X 年份 X 語境下對 X actor 模型成立」。&lt;/strong> 五個變數任一變、引用就過時或扭曲。資安 best practice 衰退快、universal-flavored 引用（「OWASP 建議 X」「RFC 規定 Y」）會 silent 把過時或語境外的內容傳給 reader、產生 &lt;a href="../false-sense-of-security-as-primary-failure/">#100 false sense of security&lt;/a> 的 citation 維度產地。&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>引用形態&lt;/th>
 &lt;th>reader 套用時的判斷&lt;/th>
 &lt;th>過時 / 扭曲時的後果&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>「OWASP 建議 X」&lt;/td>
 &lt;td>X 是 universal best practice&lt;/td>
 &lt;td>套用時 OWASP 已改版、reader 不知道&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>「OWASP Top 10 (2021) 建議 X、原文：『&amp;hellip;』」&lt;/td>
 &lt;td>X 在 2021 OWASP Top 10 語境下成立&lt;/td>
 &lt;td>過時時 reader 知道要 check 新版&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>差別在 reader 在實作 review 階段有沒有版本變數可檢查、有沒有原文語境可驗證。&lt;/p>
&lt;hr>
&lt;h2 id="情境">情境&lt;/h2>
&lt;p>資安標準群（OWASP / RFC / NIST SP 800 系列 / CIS Benchmark / PCI DSS / ISO 27001）有三個跟一般技術文獻不同的特性：&lt;/p>
&lt;h3 id="特性-1best-practice-衰退速度快">特性 1：Best practice 衰退速度快&lt;/h3>
&lt;p>加密 / hashing 領域是最典型例子：&lt;/p>





&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="ln">1&lt;/span>&lt;span class="cl">1995-2005：MD5 是 password hashing 常見選擇
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">2&lt;/span>&lt;span class="cl">2005-2010：MD5 deprecated、改 SHA-1
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">3&lt;/span>&lt;span class="cl">2010-2015：SHA-1 弱、改 bcrypt
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">4&lt;/span>&lt;span class="cl">2015-2020：bcrypt 仍 OK、PBKDF2 100k iter 仍 OK
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">5&lt;/span>&lt;span class="cl">2020-2026：建議升 argon2id、PBKDF2 推 600k+、bcrypt work factor 推 12+&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>任何 2020 年寫的「使用 bcrypt 即可」教學在 2026 年仍部分成立、但 work factor 推薦值已 outdated。沒標年份的引用 reader 沒有 review trigger。&lt;/p>
&lt;h3 id="特性-2原文常被引用扭曲">特性 2：原文常被引用扭曲&lt;/h3>
&lt;p>引用 chain 中常見的 drift：&lt;/p>





&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="ln">1&lt;/span>&lt;span class="cl">原文（OWASP Cheat Sheet）：In contexts where session fixation is a concern, consider regenerating the session ID upon login.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">2&lt;/span>&lt;span class="cl">中介轉述：OWASP says regenerate session ID upon login.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">3&lt;/span>&lt;span class="cl">進一步引用：OWASP requires session regeneration on every login.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">4&lt;/span>&lt;span class="cl">最終讀者：「OWASP 強制要求每次 login 都 regenerate session」&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>語意從「conditional 建議」滑成「universal 強制」、原文的 conditional context（「session fixation is a concern」）被丟。Reader 套用時把 conditional 當 unconditional、可能在不需要的地方加複雜度、或在需要的地方因為「我已經做了」跳過 threat model 重新評估。&lt;/p></description><content:encoded><![CDATA[<h2 id="核心原則">核心原則</h2>
<p><strong>資安標準引用不是「這條 control 寫在 X 文件」、是「這條 control 在 X 版本 X 年份 X 語境下對 X actor 模型成立」。</strong> 五個變數任一變、引用就過時或扭曲。資安 best practice 衰退快、universal-flavored 引用（「OWASP 建議 X」「RFC 規定 Y」）會 silent 把過時或語境外的內容傳給 reader、產生 <a href="../false-sense-of-security-as-primary-failure/">#100 false sense of security</a> 的 citation 維度產地。</p>
<table>
  <thead>
      <tr>
          <th>引用形態</th>
          <th>reader 套用時的判斷</th>
          <th>過時 / 扭曲時的後果</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>「OWASP 建議 X」</td>
          <td>X 是 universal best practice</td>
          <td>套用時 OWASP 已改版、reader 不知道</td>
      </tr>
      <tr>
          <td>「OWASP Top 10 (2021) 建議 X、原文：『&hellip;』」</td>
          <td>X 在 2021 OWASP Top 10 語境下成立</td>
          <td>過時時 reader 知道要 check 新版</td>
      </tr>
  </tbody>
</table>
<p>差別在 reader 在實作 review 階段有沒有版本變數可檢查、有沒有原文語境可驗證。</p>
<hr>
<h2 id="情境">情境</h2>
<p>資安標準群（OWASP / RFC / NIST SP 800 系列 / CIS Benchmark / PCI DSS / ISO 27001）有三個跟一般技術文獻不同的特性：</p>
<h3 id="特性-1best-practice-衰退速度快">特性 1：Best practice 衰退速度快</h3>
<p>加密 / hashing 領域是最典型例子：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln">1</span><span class="cl">1995-2005：MD5 是 password hashing 常見選擇
</span></span><span class="line"><span class="ln">2</span><span class="cl">2005-2010：MD5 deprecated、改 SHA-1
</span></span><span class="line"><span class="ln">3</span><span class="cl">2010-2015：SHA-1 弱、改 bcrypt
</span></span><span class="line"><span class="ln">4</span><span class="cl">2015-2020：bcrypt 仍 OK、PBKDF2 100k iter 仍 OK
</span></span><span class="line"><span class="ln">5</span><span class="cl">2020-2026：建議升 argon2id、PBKDF2 推 600k+、bcrypt work factor 推 12+</span></span></code></pre></div><p>任何 2020 年寫的「使用 bcrypt 即可」教學在 2026 年仍部分成立、但 work factor 推薦值已 outdated。沒標年份的引用 reader 沒有 review trigger。</p>
<h3 id="特性-2原文常被引用扭曲">特性 2：原文常被引用扭曲</h3>
<p>引用 chain 中常見的 drift：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln">1</span><span class="cl">原文（OWASP Cheat Sheet）：In contexts where session fixation is a concern, consider regenerating the session ID upon login.
</span></span><span class="line"><span class="ln">2</span><span class="cl">中介轉述：OWASP says regenerate session ID upon login.
</span></span><span class="line"><span class="ln">3</span><span class="cl">進一步引用：OWASP requires session regeneration on every login.
</span></span><span class="line"><span class="ln">4</span><span class="cl">最終讀者：「OWASP 強制要求每次 login 都 regenerate session」</span></span></code></pre></div><p>語意從「conditional 建議」滑成「universal 強制」、原文的 conditional context（「session fixation is a concern」）被丟。Reader 套用時把 conditional 當 unconditional、可能在不需要的地方加複雜度、或在需要的地方因為「我已經做了」跳過 threat model 重新評估。</p>
<h3 id="特性-3版本之間語意可能反轉">特性 3：版本之間語意可能反轉</h3>
<p>OWASP Top 10 / NIST SP 800 系列、版本之間的 control 重點會大幅調整：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln">1</span><span class="cl">OWASP Top 10:
</span></span><span class="line"><span class="ln">2</span><span class="cl">  2017 → A1 Injection / A7 XSS
</span></span><span class="line"><span class="ln">3</span><span class="cl">  2021 → A03 Injection（含 XSS、合併）/ A08 Software and Data Integrity Failures（新類別）
</span></span><span class="line"><span class="ln">4</span><span class="cl">NIST SP 800-63B:
</span></span><span class="line"><span class="ln">5</span><span class="cl">  2014 版：強制 password 定期更換
</span></span><span class="line"><span class="ln">6</span><span class="cl">  2017 版：明示**不要**強制定期更換、除非有外洩證據</span></span></code></pre></div><p>引用「NIST 建議定期更換 password」在 2014 對、2017 後是反向違反 NIST。版本不標 = reader 可能引用到反向版本。</p>
<h3 id="特性-4internal-citation-也是-citation">特性 4：Internal citation 也是 citation</h3>
<p>問題節點 / problem-node 框架的章節常用內部連結（<code>[authentication]</code> <code>[session-invalidation]</code> 等 knowledge-cards）作為「control-of-record」，把實作細節下放到子頁。這些內部連結<strong>等同 citation</strong>——指向「這個 control 由那一頁定義」、章節讀者在這層形成判斷、再決定是否點進去。</p>
<p>Internal citation 同樣有四個失效模式：</p>
<table>
  <thead>
      <tr>
          <th>失效模式</th>
          <th>外部 citation（OWASP / RFC）</th>
          <th>Internal citation（knowledge-cards / 跨章引用）</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>時效衰退</td>
          <td>OWASP 改版、引用過時版本</td>
          <td>knowledge-cards 內容更新、章節引用沒同步</td>
      </tr>
      <tr>
          <td>句意 drift</td>
          <td>conditional → unconditional 轉述</td>
          <td>章節用 control-name 暗示能力、子頁定義跟暗示不一致</td>
      </tr>
      <tr>
          <td>版本反轉</td>
          <td>NIST 2014 vs 2017 password 政策反向</td>
          <td>knowledge-card rewrite、原本 in-scope 變 out-of-scope</td>
      </tr>
      <tr>
          <td>Broken / dead link</td>
          <td>URL 變更、文件下架</td>
          <td>knowledge-card 改 slug / 移檔、章節連結 silent broken</td>
      </tr>
  </tbody>
</table>
<p>外部 citation 至少有版本號當 anchor、internal citation 連版本概念都沒有——更易 silent drift。所以 audit 跟 review trigger 對 internal 反而更嚴格。</p>
<hr>
<h2 id="理想做法">理想做法</h2>
<p>每個 security citation 加四個欄位：</p>
<h3 id="四欄位引用模板">四欄位引用模板</h3>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln">1</span><span class="cl">[Citation X]
</span></span><span class="line"><span class="ln">2</span><span class="cl">- 標準 / 文件：[全名 + 版本 + 年份]
</span></span><span class="line"><span class="ln">3</span><span class="cl">- 原文 / quote：[原文一句、不轉述]
</span></span><span class="line"><span class="ln">4</span><span class="cl">- 引用 scope：[原文適用的 context / actor model / 前提條件]
</span></span><span class="line"><span class="ln">5</span><span class="cl">- Review trigger：[何時要 re-check 標準是否有新版]</span></span></code></pre></div><p>例（password hashing）：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln">1</span><span class="cl">- 標準：OWASP Password Storage Cheat Sheet（2024 update）
</span></span><span class="line"><span class="ln">2</span><span class="cl">- 原文：「Use Argon2id with a minimum configuration of 19 MiB of memory, an iteration count of 2, and 1 degree of parallelism」
</span></span><span class="line"><span class="ln">3</span><span class="cl">- Scope：Web 應用 password hashing、針對個人 / 組織 actor、不適用 nation-state actor 或 high-throughput verification
</span></span><span class="line"><span class="ln">4</span><span class="cl">- Review trigger：每 12 月 re-check OWASP cheat sheet 是否有新建議；GPU 算力翻倍時提前 re-check</span></span></code></pre></div><p>例（session 管理）：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln">1</span><span class="cl">- 標準：OWASP Session Management Cheat Sheet（2024 update）
</span></span><span class="line"><span class="ln">2</span><span class="cl">- 原文：「Session ID should be regenerated after any privilege level change (e.g., after a successful authentication or after a session token has elevated privileges)」
</span></span><span class="line"><span class="ln">3</span><span class="cl">- Scope：Web session ID rotation、conditional 在 privilege level change 時、不是「每次 request」也不是「每次 login」（對 already-authenticated session）
</span></span><span class="line"><span class="ln">4</span><span class="cl">- Review trigger：當 application 加入新的 privilege boundary（如 admin elevation）時 re-check</span></span></code></pre></div><h3 id="引用扭曲的-audit-流程">引用扭曲的 audit 流程</h3>
<p>對章節既有引用跑驗證 pass：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln">1</span><span class="cl">1. 列出所有 citation（外部：標準 / RFC / CVE；內部：knowledge-cards 連結 / 跨章引用）
</span></span><span class="line"><span class="ln">2</span><span class="cl">2. 對每條 citation 找一手來源、記錄 URL + 版本 + 年份（外部）/ 最後修改 + slug（內部）
</span></span><span class="line"><span class="ln">3</span><span class="cl">3. 對比文中轉述跟原文 / 子頁定義、check 三類 drift：
</span></span><span class="line"><span class="ln">4</span><span class="cl">   - Conditional → unconditional drift（原文有條件、文中沒條件）
</span></span><span class="line"><span class="ln">5</span><span class="cl">   - Specific → general drift（原文限特定 context、文中講通用）
</span></span><span class="line"><span class="ln">6</span><span class="cl">   - Recommendation → mandate drift（原文是 consider / recommend、文中是 must / required）
</span></span><span class="line"><span class="ln">7</span><span class="cl">4. drift 找到、補回原文 conditional / scope / language strength
</span></span><span class="line"><span class="ln">8</span><span class="cl">5. 標版本跟 review trigger（外部）/ 標 last-checked + sync owner（內部）
</span></span><span class="line"><span class="ln">9</span><span class="cl">6. 內部專屬 check：連結是否 broken（slug 改了 / 檔案移了）、子頁是否仍存在 / 仍 in scope</span></span></code></pre></div><p>集合運算讓引用扭曲從「靠記憶」升級到「可驗證」。Internal citation 多兩個專屬步驟（broken link + slug drift）、跟 <a href="../url-slug-must-be-explicit-fact/">#93 URL slug 必須顯式定義為 fact</a> 同骨——identifier 跨工具 / 跨檔案沒 fact 化、就會 silent broken。</p>
<h3 id="review-trigger-的-cadence-設計">Review trigger 的 cadence 設計</h3>
<p>不同類型 citation 的 review cadence 不同：</p>
<table>
  <thead>
      <tr>
          <th>Citation 類型</th>
          <th>建議 review cadence</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Crypto primitive 強度參數</td>
          <td>每 6-12 月（actor 算力會變）</td>
      </tr>
      <tr>
          <td>OWASP Top 10 / Cheat Sheet</td>
          <td>每 12-24 月（major 改版頻率）</td>
      </tr>
      <tr>
          <td>RFC（已 finalized）</td>
          <td>每 24-36 月（除非有新 RFC supersede）</td>
      </tr>
      <tr>
          <td>CVE / 特定漏洞</td>
          <td>即時（一次性事件、不需 cadence、引用後標記「fixed in vX.Y」）</td>
      </tr>
      <tr>
          <td><strong>Internal knowledge-cards</strong></td>
          <td><strong>每 6 月（內部演化快、無版本號當 anchor）</strong></td>
      </tr>
      <tr>
          <td><strong>跨章 / 跨模組引用</strong></td>
          <td><strong>每次大改子頁時 broadcast；無 broadcast 時每 6 月 sweep</strong></td>
      </tr>
      <tr>
          <td>NIST SP 800 系列</td>
          <td>每 24 月（NIST 改版頻率）</td>
      </tr>
      <tr>
          <td>PCI DSS / ISO 27001</td>
          <td>每 24-36 月（合規標準改版頻率）</td>
      </tr>
  </tbody>
</table>
<p>跟 <a href="../escalation-trigger-quantification/">#91 升級 trigger 的量化設計</a> 同骨——「之後再 review」不是 trigger、有 cadence + owner + threshold 才是 trigger。</p>
<hr>
<h2 id="沒這樣做的麻煩">沒這樣做的麻煩</h2>
<h3 id="過時-citation-silent-變成過時實作">過時 citation silent 變成過時實作</h3>
<p>reader 信任引用、用 citation 內容實作、citation 過時後實作不知道、新 best practice 沒被採用。Crypto 領域最常見：MD5 / SHA-1 / 弱 PBKDF2 iteration / 過時 cipher suite 在生產系統留存幾十年的案例不少、原因常常是「教學 / spec 沒更新、實作跟著沒更新」。</p>
<p>跟 <a href="../false-sense-of-security-as-primary-failure/">#100 false sense of security</a> 同病、citation 維度的具體展現：reader 以為「我用了標準推薦」就安全、實際標準早改、自己用的是 deprecated 版本。</p>
<h3 id="扭曲-citation-把-conditional-變強制--把-specific-變通用">扭曲 citation 把 conditional 變強制 / 把 specific 變通用</h3>
<p>引用扭曲的後果有兩面：</p>
<ul>
<li><strong>Conditional → unconditional</strong>：reader 在不需要的地方加複雜度、團隊成本上升、卻不解決真 threat</li>
<li><strong>Specific → general</strong>：reader 把特定 context 的 control 套到不同 context、可能 silent 失效</li>
</ul>
<p>兩面都讓 mitigation 跟 threat 對位錯誤（<a href="../mitigation-threat-alignment/">#102 mitigation-threat-alignment</a>）。</p>
<h3 id="引用-chain-越長扭曲累積越嚴重">引用 chain 越長、扭曲累積越嚴重</h3>
<p>教學 → 教學 → 教學 的 chain 中、每一層轉述都可能 drift。citation 沒回到一手原文、整條 chain 共享同一個扭曲、攻擊者繞過扭曲版的 mitigation 一次、所有採用該 chain 的 implementation 都中。<strong>citation 的時效跟精確不是個別文章問題、是 ecosystem 問題</strong>——一手原文 + 版本 + 原文 quote 是 minimum cost 的修法。</p>
<hr>
<h2 id="跟其他抽象層原則的關係">跟其他抽象層原則的關係</h2>
<table>
  <thead>
      <tr>
          <th>原則</th>
          <th>關係</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><a href="../metadata-surface-in-writing-review/">#97 Metadata surface 要納入寫作 review</a></td>
          <td><strong>citation 是 metadata surface 的延伸</strong> — citation 是讀者的「外部 source」入口、跟 title / heading / link label 並列為 metadata；本卡是 #97 在引用維度的展開</td>
      </tr>
      <tr>
          <td><a href="../url-slug-must-be-explicit-fact/">#93 URL slug 必須顯式定義為 fact</a></td>
          <td><strong>identifier 同骨 + internal citation 強相關</strong> — slug 是內部 identifier、外部 citation / 內部 citation 都需要 explicit fact（版本 / 年份 / 原文 / slug + last-checked）；internal citation 沒版本號當 anchor、跟 #93 SSoT 違反同類風險、broken-link / drift 是 internal citation 專屬失效</td>
      </tr>
      <tr>
          <td><a href="../literal-interception-vs-behavioral-refinement/">#82 字面攔截 vs 行為精煉</a></td>
          <td><strong>同骨 ceiling</strong> — 引用標準名稱 = 字面、引用句意對到原文 context = 行為；stop at 字面 = false confidence</td>
      </tr>
      <tr>
          <td><a href="../escalation-trigger-quantification/">#91 升級 trigger 的量化設計</a></td>
          <td><strong>review trigger 同骨</strong> — #91 在 capability 升級的 trigger 設計、本卡在 citation review 的 cadence 設計；都是「沒 trigger = 結構性跳過」</td>
      </tr>
      <tr>
          <td><a href="../false-sense-of-security-as-primary-failure/">#100 False sense of security 主要失敗模式</a></td>
          <td><strong>#100 的 dimension 4</strong> — citation 過時 / 扭曲是 false sense 的第四大產地（dimension 1-3 = threat / mitigation / context、本卡 = 引用 source）</td>
      </tr>
      <tr>
          <td><a href="../security-teaching-rigor-asymmetry/">#99 資安教學審查標準對應風險不對稱</a></td>
          <td>上游動機 — verifiability-first 的 dimension 4</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="判讀徵兆">判讀徵兆</h2>
<table>
  <thead>
      <tr>
          <th>徵兆</th>
          <th>該做的事</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>引用「OWASP / NIST / RFC / CIS」沒標年份 / 版本</td>
          <td>補版本 + 年份、確認當前是否仍是 current</td>
      </tr>
      <tr>
          <td>引用是轉述、沒原文 quote</td>
          <td>找一手來源、補原文 quote、check 是否被 drift</td>
      </tr>
      <tr>
          <td>「OWASP <strong>建議</strong> X」「RFC <strong>規定</strong> Y」當 universal</td>
          <td>補 scope（在什麼 context / actor model 下成立）</td>
      </tr>
      <tr>
          <td>Crypto / hashing 強度參數是固定值（10 / 100k / 32 char）</td>
          <td>補 review trigger（每 6-12 月 re-check actor 算力跟標準）</td>
      </tr>
      <tr>
          <td>Citation 是「最佳實踐」「業界標準」當 anchor、沒列具體文件</td>
          <td>補具體標準名稱 + 版本、不能用 vague reference</td>
      </tr>
      <tr>
          <td>章節寫於 N 年前、沒提 last reviewed 日期</td>
          <td>補 last reviewed 標記、設下次 review trigger</td>
      </tr>
      <tr>
          <td>Conditional 原文被引成 unconditional（「強制」「必須」「總是」）</td>
          <td>找原文 conditional context、補回 scope qualifier</td>
      </tr>
      <tr>
          <td>「之後標準改了再更新」</td>
          <td>是 <a href="../external-trigger-for-high-roi-work/">#72</a> 結構性跳過、補 review cadence + owner</td>
      </tr>
      <tr>
          <td>章節用 internal link（knowledge-cards / 跨章引用）作為 control-of-record、沒 last-checked / sync owner</td>
          <td>等同未驗證的 citation；補 last-checked + sync owner、子頁大改時 broadcast 到引用方</td>
      </tr>
      <tr>
          <td>Internal link 連結還在但目標頁 slug / 內容已改、章節原本暗示的 control 跟現在不對應</td>
          <td>Silent broken / drift；定期跑連結 sweep + 文意對比、跟外部 citation 同流程處理</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="適用範圍與邊界">適用範圍與邊界</h2>
<ul>
<li><strong>適用</strong>：資安內容引用標準（auth / crypto / 傳輸 / 防護 / 合規）；<strong>內部 citation</strong>（knowledge-cards 連結、跨章 / 跨模組引用作為 control-of-record）；任何 best practice 衰退快、版本之間語意會反轉的領域（cloud security 配置、container 安全、特定 framework 的安全 idiom）</li>
<li><strong>不適用</strong>：純歷史 / 概念介紹（不依賴 current best practice）、學術 retrospective（討論 historical 標準時版本本身是內容）</li>
<li><strong>邊界</strong>：「citation 時效跟精確」≠「窮舉所有版本變更」——只列當前文章涵蓋 scope 的 citation、追到一手 + 版本 + scope qualifier 即可；判別準則：「如果這條 citation 過時或語境變、reader 會做錯什麼？」——會做錯 → 補完整四欄位；不會做錯（純歷史 reference）→ 標年份即可</li>
<li><strong>過度引用反例</strong>：每段話都附 citation 鏈 + 原文 quote + 三條 review trigger、文章變 footnote-driven、reader 讀不下去；citation 投資量級對應該段對 reader 實作的影響——核心 mitigation 段值得四欄位完整、background 段標版本 + URL 即可</li>
</ul>
<p>本卡是資安 audit 第四個維度（citation）、配 <a href="../threat-model-explicitness/">#101</a> / <a href="../mitigation-threat-alignment/">#102</a> / <a href="../mitigation-context-dependence/">#103</a> 形成完整 audit dimension 集合（threat / mitigation / context / citation）。後續 <a href="../security-audit-recommendation-tiers/">#105 audit recommendation 層級</a> 把四維度的 weakness 統合成 recommendation 決策。</p>
]]></content:encoded></item></channel></rss>