mirror of
https://github.com/harttle/liquidjs.git
synced 2026-09-16 21:00:40 -07:00
Deploying to gh-pages from @ harttle/liquidjs@457fae0736 🚀
This commit is contained in:
@@ -92,7 +92,7 @@
|
||||
|
||||
</header>
|
||||
<div class="article-content" itemprop="articleBody">
|
||||
<p>LiquidJS 提供了面向 DoS 的限制选项(<code>parseLimit</code>、<code>renderLimit</code>、<code>memoryLimit</code>)来降低风险。本文按统一结构说明每个限制的作用范围,以及你在生产环境应采用的安全边界。</p>
|
||||
<p>LiquidJS 提供了面向 DoS 的限制选项(<code>parseLimit</code>、<code>renderLimit</code>、<code>memoryLimit</code>)来降低风险。本文概述这些限制、<a href="/api/interfaces/LiquidOptions.html#ownPropertyOnly"><code>ownPropertyOnly</code></a>、自定义 <a href="/api/classes/Drop.html"><code>Drop</code></a> 的注意事项,以及生产环境应采用的安全边界。</p>
|
||||
<h2 id="安全边界" class="article-heading"><a href="#安全边界" class="headerlink" title="安全边界"></a>安全边界<a class="article-anchor" href="#安全边界" aria-hidden="true"></a></h2><p>内置限制是协作式防护,不是严格的运行时隔离。</p>
|
||||
<ul>
|
||||
<li>它<strong>不等于</strong>进程的 RSS/heap 实际占用。</li>
|
||||
@@ -126,6 +126,8 @@
|
||||
<span class="token liquid language-liquid"><span class="token delimiter punctuation">{%</span> <span class="token keyword">endfor</span> <span class="token delimiter punctuation">%}</span></span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span></span></code></pre>
|
||||
|
||||
<p>由于 <a target="_blank" rel="noopener external nofollow noreferrer" href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Memory_management">JavaScript 使用 GC 来管理内存</a>,<code>memoryLimit</code> 可能无法反映实际的内存占用。</p>
|
||||
<h2 id="ownPropertyOnly-与作用域数据" class="article-heading"><a href="#ownPropertyOnly-与作用域数据" class="headerlink" title="ownPropertyOnly 与作用域数据"></a><code>ownPropertyOnly</code> 与作用域数据<a class="article-anchor" href="#ownPropertyOnly-与作用域数据" aria-hidden="true"></a></h2><p>将 <a href="/api/interfaces/LiquidOptions.html#ownPropertyOnly"><code>ownPropertyOnly</code></a> 设为 <code>true</code> 时,普通作用域对象只暴露<strong>自有</strong>属性(不包含继承链与 <code>Object.prototype</code> 上的键)。默认 <code>false</code> 与常规 JavaScript 属性访问一致。对不可信或可能被污染的对象应使用 <code>true</code>;若缺少路径需报错,可配合 <a href="/api/interfaces/LiquidOptions.html#strictVariables"><code>strictVariables</code></a>。单次渲染可通过 <a href="/api/interfaces/RenderOptions.html#ownPropertyOnly"><code>RenderOptions</code></a> 覆盖。该选项只约束作用域数据的读取,不是过滤器、标签或宿主代码的沙箱。</p>
|
||||
<h2 id="自定义-Drop-类" class="article-heading"><a href="#自定义-Drop-类" class="headerlink" title="自定义 Drop 类"></a>自定义 <code>Drop</code> 类<a class="article-anchor" href="#自定义-Drop-类" aria-hidden="true"></a></h2><p><a href="/api/classes/Drop.html"><code>Drop</code></a> 与普通对象处理不同:即使开启 <a href="/api/interfaces/LiquidOptions.html#ownPropertyOnly"><code>ownPropertyOnly</code></a>,LiquidJS 仍可能沿原型链读取属性,并在未解析时调用 <a href="/api/classes/Drop.html#liquidMethodMissing"><code>liquidMethodMissing</code></a>。<strong>你</strong>对 Drop 暴露的能力负责:收窄 API,勿向 Drop 传入不安全数据,除非该类明确为模板访问而设计。仅靠 <code>ownPropertyOnly</code> 无法硬化自定义 Drop,应像审计其他特权代码一样审查其实现。</p>
|
||||
<h2 id="在线服务建议" class="article-heading"><a href="#在线服务建议" class="headerlink" title="在线服务建议"></a>在线服务建议<a class="article-anchor" href="#在线服务建议" aria-hidden="true"></a></h2><p>如果你运行在线服务,建议尽量避免渲染完全由用户定义的模板。</p>
|
||||
<ul>
|
||||
<li>优先使用受控模板或受限模板子集。</li>
|
||||
@@ -136,7 +138,7 @@
|
||||
|
||||
</div>
|
||||
<footer class="article-footer">
|
||||
<time class="article-footer-updated" datetime="2026-05-11T16:00:04.057Z" itemprop="dateModified">上次更新:2026-05-11</time>
|
||||
<time class="article-footer-updated" datetime="2026-05-14T14:18:33.235Z" itemprop="dateModified">上次更新:2026-05-14</time>
|
||||
<a href="truthy-and-falsy.html" class="article-footer-prev" title="真和假"><i class="icon-chevron-left"></i><span>上一页</span></a><a href="static-analysis.html" class="article-footer-next" title="静态分析"><span>下一页</span><i class="icon-chevron-right"></i></a>
|
||||
</footer>
|
||||
</div>
|
||||
@@ -145,7 +147,7 @@
|
||||
<div id="article-toc-inner">
|
||||
<div id="article-toc-inner-list">
|
||||
<strong class="sidebar-title">目录</strong>
|
||||
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%AE%89%E5%85%A8%E8%BE%B9%E7%95%8C"><span class="toc-text">安全边界</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E9%99%90%E5%88%B6%E9%80%9F%E8%A7%88"><span class="toc-text">限制速览</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E9%99%90%E5%88%B6%E8%AF%A6%E8%A7%A3"><span class="toc-text">限制详解</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#parseLimit"><span class="toc-text">parseLimit</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#renderLimit"><span class="toc-text">renderLimit</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#memoryLimit"><span class="toc-text">memoryLimit</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%9C%A8%E7%BA%BF%E6%9C%8D%E5%8A%A1%E5%BB%BA%E8%AE%AE"><span class="toc-text">在线服务建议</span></a></li></ol>
|
||||
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%AE%89%E5%85%A8%E8%BE%B9%E7%95%8C"><span class="toc-text">安全边界</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E9%99%90%E5%88%B6%E9%80%9F%E8%A7%88"><span class="toc-text">限制速览</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E9%99%90%E5%88%B6%E8%AF%A6%E8%A7%A3"><span class="toc-text">限制详解</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#parseLimit"><span class="toc-text">parseLimit</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#renderLimit"><span class="toc-text">renderLimit</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#memoryLimit"><span class="toc-text">memoryLimit</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#ownPropertyOnly-%E4%B8%8E%E4%BD%9C%E7%94%A8%E5%9F%9F%E6%95%B0%E6%8D%AE"><span class="toc-text">ownPropertyOnly 与作用域数据</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E8%87%AA%E5%AE%9A%E4%B9%89-Drop-%E7%B1%BB"><span class="toc-text">自定义 Drop 类</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%9C%A8%E7%BA%BF%E6%9C%8D%E5%8A%A1%E5%BB%BA%E8%AE%AE"><span class="toc-text">在线服务建议</span></a></li></ol>
|
||||
</div>
|
||||
<a href="#" id="article-toc-top">回到顶部</a>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user