fix: 数据变更工单拦截只读SQL — 前端提交/检测+后端创建三层拦截SELECT/SHOW/DESC/EXPLAIN

This commit is contained in:
logan committed 2026-06-03 00:48:09 +08:00
1 parent 70da8a8a8b
commit 97fd4ff069
2 files changed
+27

No files matched your search

+17
View File
@@ -180,6 +180,15 @@ export default function TicketCreatePage() {
if (!instanceId) { setError('请选择目标实例'); return; }
if (!database) { setError('请选择数据库'); return; }
// 前端拦截只读语句
const upperSQL = sqlContent.trim().toUpperCase();
const readOnlyPrefixes = ['SELECT', 'SHOW', 'DESC', 'DESCRIBE', 'EXPLAIN'];
if (readOnlyPrefixes.some(p => upperSQL.startsWith(p))) {
setError('数据变更工单不支持 SELECT/SHOW/DESC 等只读语句,请使用查询数据功能');
setValidated(false);
return;
}
setError(''); setAuditResult(null); setValidating(true);
try {
const result = await ticketApi.audit({
@@ -212,6 +221,14 @@ export default function TicketCreatePage() {
if (!sqlContent.trim()) { setError('请填写 SQL 语句'); return; }
if (!reason.trim()) { setError('请填写变更原因'); return; }
// 前端拦截只读语句
const upperSQL = sqlContent.trim().toUpperCase();
const readOnlyPrefixes = ['SELECT', 'SHOW', 'DESC', 'DESCRIBE', 'EXPLAIN'];
if (readOnlyPrefixes.some(p => upperSQL.startsWith(p))) {
setError('数据变更工单不支持 SELECT/SHOW/DESC 等只读语句,请使用查询数据功能');
return;
}
setError(''); setSubmitting(true);
try {