{"componentChunkName":"component---src-templates-acg-portal-new-template-tsx","path":"/qmrwxxic9","result":{"data":{"markdownRemark":{"html":"<p>本文档介绍ClickHouse引擎支持的SQL防御规则及推荐的SQL写法。SQL防御的功能说明、规则分类、命中动作以及新增规则、查看系统规则等操作方式请参见<a href=\"https://cloud.baidu.com/doc/BMR/s/Umrwxh1yj\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">SQL防御功能</a>。本文仅针对ClickHouse引擎的规则支持情况和使用建议进行说明。</p>\n<h2 id=\"clickhouse支持的防御规则\"><a href=\"#clickhouse%E6%94%AF%E6%8C%81%E7%9A%84%E9%98%B2%E5%BE%A1%E8%A7%84%E5%88%99\" aria-label=\"clickhouse支持的防御规则 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>ClickHouse支持的防御规则</h2>\n<p>ClickHouse除支持通用的静态、动态、运行时规则外，还支持一批针对集群级别（on cluster）操作的独享规则，用于防止在整个集群上执行高风险的DDL和数据变更操作。</p>\n<h3 id=\"静态规则（sql文本检测）\"><a href=\"#%E9%9D%99%E6%80%81%E8%A7%84%E5%88%99%EF%BC%88sql%E6%96%87%E6%9C%AC%E6%A3%80%E6%B5%8B%EF%BC%89\" aria-label=\"静态规则（sql文本检测） permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>静态规则（SQL文本检测）</h3>\n<p>表一 ClickHouse静态规则</p>\n<table>\n<thead>\n<tr>\n<th>规则ID</th>\n<th>规则描述</th>\n<th>建议阈值</th>\n<th>SQL示例</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>static_0001</td>\n<td>SQL中<code>COUNT(DISTINCT)</code>出现次数超限</td>\n<td>10</td>\n<td><code>SELECT COUNT(DISTINCT a), COUNT(DISTINCT b) FROM t</code></td>\n</tr>\n<tr>\n<td>static_0002</td>\n<td>SQL中使用了<code>NOT IN &#x3C;subquery></code></td>\n<td>—</td>\n<td><code>SELECT * FROM t WHERE id NOT IN (SELECT id FROM t2)</code></td>\n</tr>\n<tr>\n<td>static_0003</td>\n<td>SQL中JOIN次数超限</td>\n<td>20</td>\n<td>多表JOIN场景</td>\n</tr>\n<tr>\n<td>static_0004</td>\n<td>SQL中UNION ALL次数超限</td>\n<td>20</td>\n<td>多个<code>SELECT ... UNION ALL SELECT ...</code></td>\n</tr>\n<tr>\n<td>static_0005</td>\n<td>子查询嵌套层数超限</td>\n<td>20</td>\n<td><code>SELECT * FROM (SELECT * FROM (SELECT ...))</code></td>\n</tr>\n<tr>\n<td>static_0006</td>\n<td>SQL语句字符串长度超限（单位KB）</td>\n<td>10</td>\n<td>超长SQL语句</td>\n</tr>\n<tr>\n<td>static_0007</td>\n<td>多表关联时存在笛卡尔积</td>\n<td>—</td>\n<td><code>SELECT * FROM A, B</code></td>\n</tr>\n</tbody>\n</table>\n<h3 id=\"clickhouse独享静态规则（集群级别操作）\"><a href=\"#clickhouse%E7%8B%AC%E4%BA%AB%E9%9D%99%E6%80%81%E8%A7%84%E5%88%99%EF%BC%88%E9%9B%86%E7%BE%A4%E7%BA%A7%E5%88%AB%E6%93%8D%E4%BD%9C%EF%BC%89\" aria-label=\"clickhouse独享静态规则（集群级别操作） permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>ClickHouse独享静态规则（集群级别操作）</h3>\n<p>表二 ClickHouse集群级别操作规则</p>\n<table>\n<thead>\n<tr>\n<th>规则ID</th>\n<th>规则描述</th>\n<th>SQL示例</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>static_0008</td>\n<td>集群级别（on cluster）执行<code>ALTER TABLE UPDATE</code>操作</td>\n<td><code>ALTER TABLE testtb1 ON CLUSTER default_cluster UPDATE price=10.0 WHERE id='100'</code></td>\n</tr>\n<tr>\n<td>static_0009</td>\n<td>集群级别（on cluster）执行<code>ALTER TABLE DELETE</code>操作</td>\n<td><code>ALTER TABLE testtb1 ON CLUSTER default_cluster DELETE WHERE id='10'</code></td>\n</tr>\n<tr>\n<td>static_0010</td>\n<td>集群级别（on cluster）执行<code>ALTER TABLE ADD COLUMN</code>操作</td>\n<td><code>ALTER TABLE testtb1 ON CLUSTER default_cluster ADD COLUMN testc String</code></td>\n</tr>\n<tr>\n<td>static_0011</td>\n<td>集群级别（on cluster）执行<code>ALTER TABLE DROP COLUMN</code>操作</td>\n<td><code>ALTER TABLE testtb1 ON CLUSTER default_cluster DROP COLUMN testc</code></td>\n</tr>\n<tr>\n<td>static_0012</td>\n<td>集群级别（on cluster）执行<code>OPTIMIZE FINAL</code>操作</td>\n<td><code>OPTIMIZE TABLE testtb1 ON CLUSTER default_cluster FINAL</code></td>\n</tr>\n<tr>\n<td>static_0013</td>\n<td>集群级别（on cluster）执行<code>DROP TABLE</code>操作</td>\n<td><code>DROP TABLE testtb1 ON CLUSTER default_cluster</code></td>\n</tr>\n<tr>\n<td>static_0014</td>\n<td>集群级别（on cluster）执行<code>TRUNCATE TABLE</code>操作</td>\n<td><code>TRUNCATE TABLE testtb1 ON CLUSTER default_cluster</code></td>\n</tr>\n</tbody>\n</table>\n<h3 id=\"动态规则（执行计划检测）\"><a href=\"#%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%99%EF%BC%88%E6%89%A7%E8%A1%8C%E8%AE%A1%E5%88%92%E6%A3%80%E6%B5%8B%EF%BC%89\" aria-label=\"动态规则（执行计划检测） permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>动态规则（执行计划检测）</h3>\n<p>表三 ClickHouse动态规则</p>\n<table>\n<thead>\n<tr>\n<th>规则ID</th>\n<th>规则描述</th>\n<th>建议阈值</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>dynamic_0001</td>\n<td>扫描文件数超限</td>\n<td>100000</td>\n</tr>\n<tr>\n<td>dynamic_0002</td>\n<td>单表操作（SELECT/DELETE/UPDATE/ALTER）涉及分区数超限</td>\n<td>10000</td>\n</tr>\n<tr>\n<td>dynamic_0003</td>\n<td>JOIN右表为分布式表时，右表数据量超限</td>\n<td>100000000</td>\n</tr>\n</tbody>\n</table>\n<h3 id=\"运行时规则（执行中检测）\"><a href=\"#%E8%BF%90%E8%A1%8C%E6%97%B6%E8%A7%84%E5%88%99%EF%BC%88%E6%89%A7%E8%A1%8C%E4%B8%AD%E6%A3%80%E6%B5%8B%EF%BC%89\" aria-label=\"运行时规则（执行中检测） permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>运行时规则（执行中检测）</h3>\n<p>表四 ClickHouse运行时规则</p>\n<table>\n<thead>\n<tr>\n<th>规则ID</th>\n<th>规则描述</th>\n<th>建议阈值</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>running_0001</td>\n<td>SELECT返回结果行数超限</td>\n<td>100000</td>\n</tr>\n<tr>\n<td>running_0002</td>\n<td>SQL占用内存峰值超限（单位MB）</td>\n<td>按集群配置</td>\n</tr>\n<tr>\n<td>running_0003</td>\n<td>SQL已运行时长超限（单位秒）</td>\n<td>按业务需求</td>\n</tr>\n<tr>\n<td>running_0004</td>\n<td>SQL已扫描数据量超限（单位GB）</td>\n<td>10240</td>\n</tr>\n</tbody>\n</table>\n<h2 id=\"推荐sql写法\"><a href=\"#%E6%8E%A8%E8%8D%90sql%E5%86%99%E6%B3%95\" aria-label=\"推荐sql写法 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>推荐SQL写法</h2>\n<p>查询明细数据时添加过滤条件和<code>LIMIT</code>，避免触发running_0001返回结果行数超限：</p>\n\n    <div class=\"code-block-wrapper\">\n        <div class=\"code-block\">\n            <div class=\"code-block-header\">\n                <span class=\"code-block-name\">Plain Text</span>\n                <button class=\"code-copy-btn\" data-tooltip-text=\"\">\n                    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\"> <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M5.57894 3.45614C5.57894 3.38832 5.63392 3.33333 5.70175 3.33333H12.5439C12.6117 3.33333 12.6667 3.38832 12.6667 3.45614V10.2982C12.6667 10.3661 12.6117 10.4211 12.5439 10.4211H11.7544V5.70175C11.7544 4.89754 11.1025 4.24561 10.2982 4.24561H5.57894V3.45614ZM4.24561 4.24561V3.45614C4.24561 2.65194 4.89754 2 5.70175 2H12.5439C13.3481 2 14 2.65194 14 3.45614V10.2982C14 11.1025 13.3481 11.7544 12.5439 11.7544H11.7544V12.5439C11.7544 13.3481 11.1025 14 10.2982 14H3.45614C2.65194 14 2 13.3481 2 12.5439V5.70175C2 4.89754 2.65194 4.24561 3.45614 4.24561H4.24561ZM3.33333 5.70175C3.33333 5.63392 3.38832 5.57894 3.45614 5.57894H10.2982C10.3661 5.57894 10.4211 5.63392 10.4211 5.70175V12.5439C10.4211 12.6117 10.3661 12.6667 10.2982 12.6667H3.45614C3.38832 12.6667 3.33333 12.6117 3.33333 12.5439V5.70175Z\" fill=\"currentColor\"></path> </svg>\n                    复制\n                </button>\n            </div>\n            <div class=\"code-block-content\">\n                <pre class=\"language-text\"><code><span class=\"line-number\">1</span>SELECT *\n<span class=\"line-number\">2</span>FROM user_event_detail\n<span class=\"line-number\">3</span>WHERE event_date = &#039;2026-07-03&#039;\n<span class=\"line-number\">4</span>LIMIT 100;</code></pre>\n            </div>\n        </div>\n    </div>\n  \n<p>分区表查询带上分区字段，避免触发dynamic_0002分区数超限：</p>\n\n    <div class=\"code-block-wrapper\">\n        <div class=\"code-block\">\n            <div class=\"code-block-header\">\n                <span class=\"code-block-name\">Plain Text</span>\n                <button class=\"code-copy-btn\" data-tooltip-text=\"\">\n                    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\"> <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M5.57894 3.45614C5.57894 3.38832 5.63392 3.33333 5.70175 3.33333H12.5439C12.6117 3.33333 12.6667 3.38832 12.6667 3.45614V10.2982C12.6667 10.3661 12.6117 10.4211 12.5439 10.4211H11.7544V5.70175C11.7544 4.89754 11.1025 4.24561 10.2982 4.24561H5.57894V3.45614ZM4.24561 4.24561V3.45614C4.24561 2.65194 4.89754 2 5.70175 2H12.5439C13.3481 2 14 2.65194 14 3.45614V10.2982C14 11.1025 13.3481 11.7544 12.5439 11.7544H11.7544V12.5439C11.7544 13.3481 11.1025 14 10.2982 14H3.45614C2.65194 14 2 13.3481 2 12.5439V5.70175C2 4.89754 2.65194 4.24561 3.45614 4.24561H4.24561ZM3.33333 5.70175C3.33333 5.63392 3.38832 5.57894 3.45614 5.57894H10.2982C10.3661 5.57894 10.4211 5.63392 10.4211 5.70175V12.5439C10.4211 12.6117 10.3661 12.6667 10.2982 12.6667H3.45614C3.38832 12.6667 3.33333 12.6117 3.33333 12.5439V5.70175Z\" fill=\"currentColor\"></path> </svg>\n                    复制\n                </button>\n            </div>\n            <div class=\"code-block-content\">\n                <pre class=\"language-text\"><code><span class=\"line-number\">1</span>SELECT city, count(*) AS cnt\n<span class=\"line-number\">2</span>FROM user_event_detail\n<span class=\"line-number\">3</span>WHERE event_date &gt;= &#039;2026-07-01&#039;\n<span class=\"line-number\">4</span>  AND event_date &lt; &#039;2026-07-04&#039;\n<span class=\"line-number\">5</span>GROUP BY city;</code></pre>\n            </div>\n        </div>\n    </div>\n  \n<p>JOIN查询必须包含明确的JOIN条件，避免触发static_0007笛卡尔积拦截：</p>\n\n    <div class=\"code-block-wrapper\">\n        <div class=\"code-block\">\n            <div class=\"code-block-header\">\n                <span class=\"code-block-name\">Plain Text</span>\n                <button class=\"code-copy-btn\" data-tooltip-text=\"\">\n                    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\"> <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M5.57894 3.45614C5.57894 3.38832 5.63392 3.33333 5.70175 3.33333H12.5439C12.6117 3.33333 12.6667 3.38832 12.6667 3.45614V10.2982C12.6667 10.3661 12.6117 10.4211 12.5439 10.4211H11.7544V5.70175C11.7544 4.89754 11.1025 4.24561 10.2982 4.24561H5.57894V3.45614ZM4.24561 4.24561V3.45614C4.24561 2.65194 4.89754 2 5.70175 2H12.5439C13.3481 2 14 2.65194 14 3.45614V10.2982C14 11.1025 13.3481 11.7544 12.5439 11.7544H11.7544V12.5439C11.7544 13.3481 11.1025 14 10.2982 14H3.45614C2.65194 14 2 13.3481 2 12.5439V5.70175C2 4.89754 2.65194 4.24561 3.45614 4.24561H4.24561ZM3.33333 5.70175C3.33333 5.63392 3.38832 5.57894 3.45614 5.57894H10.2982C10.3661 5.57894 10.4211 5.63392 10.4211 5.70175V12.5439C10.4211 12.6117 10.3661 12.6667 10.2982 12.6667H3.45614C3.38832 12.6667 3.33333 12.6117 3.33333 12.5439V5.70175Z\" fill=\"currentColor\"></path> </svg>\n                    复制\n                </button>\n            </div>\n            <div class=\"code-block-content\">\n                <pre class=\"language-text\"><code><span class=\"line-number\">1</span>SELECT a.user_id, a.event_type, b.name\n<span class=\"line-number\">2</span>FROM user_event_detail a\n<span class=\"line-number\">3</span>JOIN tb_primary_key b\n<span class=\"line-number\">4</span>  ON a.user_id = b.user_id\n<span class=\"line-number\">5</span>WHERE a.event_date = &#039;2026-07-03&#039;;</code></pre>\n            </div>\n        </div>\n    </div>\n  \n<p>集群级别的DDL和数据变更操作影响范围大，建议在单节点或明确评估影响后执行，避免触发static_0008至static_0014等on cluster规则。</p>\n<h2 id=\"不推荐sql写法\"><a href=\"#%E4%B8%8D%E6%8E%A8%E8%8D%90sql%E5%86%99%E6%B3%95\" aria-label=\"不推荐sql写法 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>不推荐SQL写法</h2>\n<p>以下写法可能被防御规则拦截：</p>\n\n    <div class=\"code-block-wrapper\">\n        <div class=\"code-block\">\n            <div class=\"code-block-header\">\n                <span class=\"code-block-name\">Plain Text</span>\n                <button class=\"code-copy-btn\" data-tooltip-text=\"\">\n                    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\"> <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M5.57894 3.45614C5.57894 3.38832 5.63392 3.33333 5.70175 3.33333H12.5439C12.6117 3.33333 12.6667 3.38832 12.6667 3.45614V10.2982C12.6667 10.3661 12.6117 10.4211 12.5439 10.4211H11.7544V5.70175C11.7544 4.89754 11.1025 4.24561 10.2982 4.24561H5.57894V3.45614ZM4.24561 4.24561V3.45614C4.24561 2.65194 4.89754 2 5.70175 2H12.5439C13.3481 2 14 2.65194 14 3.45614V10.2982C14 11.1025 13.3481 11.7544 12.5439 11.7544H11.7544V12.5439C11.7544 13.3481 11.1025 14 10.2982 14H3.45614C2.65194 14 2 13.3481 2 12.5439V5.70175C2 4.89754 2.65194 4.24561 3.45614 4.24561H4.24561ZM3.33333 5.70175C3.33333 5.63392 3.38832 5.57894 3.45614 5.57894H10.2982C10.3661 5.57894 10.4211 5.63392 10.4211 5.70175V12.5439C10.4211 12.6117 10.3661 12.6667 10.2982 12.6667H3.45614C3.38832 12.6667 3.33333 12.6117 3.33333 12.5439V5.70175Z\" fill=\"currentColor\"></path> </svg>\n                    复制\n                </button>\n            </div>\n            <div class=\"code-block-content\">\n                <pre class=\"language-text\"><code><span class=\"line-number\">1</span>-- 无过滤条件扫描大表（触发 running_0001/running_0004）\n<span class=\"line-number\">2</span>SELECT * FROM user_event_detail;\n<span class=\"line-number\">3</span>\n<span class=\"line-number\">4</span>-- 无JOIN条件笛卡尔积（触发 static_0007）\n<span class=\"line-number\">5</span>SELECT * FROM table_a, table_b;\n<span class=\"line-number\">6</span>\n<span class=\"line-number\">7</span>-- 集群级别删除全表（触发 static_0009/static_0014）\n<span class=\"line-number\">8</span>TRUNCATE TABLE user_event_detail ON CLUSTER default_cluster;\n<span class=\"line-number\">9</span>\n<span class=\"line-number\">10</span>-- NOT IN 子查询（触发 static_0002）\n<span class=\"line-number\">11</span>SELECT * FROM t WHERE id NOT IN (SELECT id FROM t2 WHERE status=0);\n<span class=\"line-number\">12</span>\n<span class=\"line-number\">13</span>-- 过多 COUNT(DISTINCT)（触发 static_0001）\n<span class=\"line-number\">14</span>SELECT COUNT(DISTINCT a), COUNT(DISTINCT b), COUNT(DISTINCT c),\n<span class=\"line-number\">15</span>       COUNT(DISTINCT d), COUNT(DISTINCT e), COUNT(DISTINCT f),\n<span class=\"line-number\">16</span>       COUNT(DISTINCT g), COUNT(DISTINCT h), COUNT(DISTINCT i),\n<span class=\"line-number\">17</span>       COUNT(DISTINCT j), COUNT(DISTINCT k)\n<span class=\"line-number\">18</span>FROM big_table;</code></pre>\n            </div>\n        </div>\n    </div>\n  \n<blockquote>\n<p>说明：以上规则的启用状态、阈值和命中动作均需在防御规则页面配置，配置方式请参见<a href=\"https://cloud.baidu.com/doc/BMR/s/Umrwxh1yj\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">SQL防御功能</a>。</p>\n</blockquote>","fields":{"slug":"qmrwxxic9","title":"ClickHouse SQL防御","date":"2026-07-24","extractedHeadings":[]},"headings":[{"value":"ClickHouse支持的防御规则","depth":2},{"value":"静态规则（SQL文本检测）","depth":3},{"value":"ClickHouse独享静态规则（集群级别操作）","depth":3},{"value":"动态规则（执行计划检测）","depth":3},{"value":"运行时规则（执行中检测）","depth":3},{"value":"推荐SQL写法","depth":2},{"value":"不推荐SQL写法","depth":2}]}},"pageContext":{"isCreatedByStatefulCreatePages":false,"slug":"qmrwxxic9","prev":{"id":"9mq62ikb8","name":"数据重分布使用说明","path":"9mq62ikb8","filePath":"开源组件介绍/ClickHouse/运维相关操作/数据重分布使用说明.md","seo":null,"parentIds":["ejwvxvcqb","2m64f4p1k","Sm64fba3r"],"parents":[{"id":"ejwvxvcqb","documentId":null,"name":"开源组件介绍","repoName":"BMR","filePath":"开源组件介绍","disabled":false,"path":"ejwvxvcqb","lastMergeTime":null,"isApiDoc":null,"httpMethod":null,"seo":null,"sourceOrgName":null,"sourceRepoName":null,"sourceDocumentId":null},{"id":"2m64f4p1k","documentId":"0ecab53a-49c0-4bb1-9066-db2d01b50eaa","name":"ClickHouse","repoName":"BMR","filePath":"开源组件介绍/ClickHouse","disabled":false,"path":"2m64f4p1k","lastMergeTime":null,"isApiDoc":null,"httpMethod":null,"seo":null,"sourceOrgName":null,"sourceRepoName":null,"sourceDocumentId":null},{"id":"Sm64fba3r","documentId":"270cc033-2308-4a71-bbca-e7e69f69cc87","name":"运维相关操作","repoName":"BMR","filePath":"开源组件介绍/ClickHouse/运维相关操作","disabled":false,"path":"Sm64fba3r","lastMergeTime":null,"isApiDoc":null,"httpMethod":null,"seo":null,"sourceOrgName":null,"sourceRepoName":null,"sourceDocumentId":null}]},"next":{"id":"Jm64pm6kl","name":"常见问题","path":"Jm64pm6kl","filePath":"开源组件介绍/ClickHouse/常见问题.md","seo":null,"parentIds":["ejwvxvcqb","2m64f4p1k"],"parents":[{"id":"ejwvxvcqb","documentId":null,"name":"开源组件介绍","repoName":"BMR","filePath":"开源组件介绍","disabled":false,"path":"ejwvxvcqb","lastMergeTime":null,"isApiDoc":null,"httpMethod":null,"seo":null,"sourceOrgName":null,"sourceRepoName":null,"sourceDocumentId":null},{"id":"2m64f4p1k","documentId":"0ecab53a-49c0-4bb1-9066-db2d01b50eaa","name":"ClickHouse","repoName":"BMR","filePath":"开源组件介绍/ClickHouse","disabled":false,"path":"2m64f4p1k","lastMergeTime":null,"isApiDoc":null,"httpMethod":null,"seo":null,"sourceOrgName":null,"sourceRepoName":null,"sourceDocumentId":null}]},"parents":[{"id":"ejwvxvcqb","documentId":null,"name":"开源组件介绍","repoName":"BMR","filePath":"开源组件介绍","disabled":false,"path":"ejwvxvcqb","lastMergeTime":null,"isApiDoc":null,"httpMethod":null,"seo":null,"sourceOrgName":null,"sourceRepoName":null,"sourceDocumentId":null},{"id":"2m64f4p1k","documentId":"0ecab53a-49c0-4bb1-9066-db2d01b50eaa","name":"ClickHouse","repoName":"BMR","filePath":"开源组件介绍/ClickHouse","disabled":false,"path":"2m64f4p1k","lastMergeTime":null,"isApiDoc":null,"httpMethod":null,"seo":null,"sourceOrgName":null,"sourceRepoName":null,"sourceDocumentId":null},{"id":"Sm64fba3r","documentId":"270cc033-2308-4a71-bbca-e7e69f69cc87","name":"运维相关操作","repoName":"BMR","filePath":"开源组件介绍/ClickHouse/运维相关操作","disabled":false,"path":"Sm64fba3r","lastMergeTime":null,"isApiDoc":null,"httpMethod":null,"seo":null,"sourceOrgName":null,"sourceRepoName":null,"sourceDocumentId":null}],"specificSeo":null}}}