Skip to content

Commit 5d5a92a

Browse files
committed
fix: fix Excel sheet name inject SQL
1 parent 2e4f3bf commit 5d5a92a

1 file changed

Lines changed: 8 additions & 1 deletion

File tree

backend/apps/datasource/api/datasource.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import os
55
import traceback
66
import uuid
7+
import re
78
from io import StringIO
89
from typing import List
910
from urllib.parse import quote
@@ -567,7 +568,7 @@ def inner():
567568

568569
for sheet_info in import_req.sheets:
569570
sheet_name = sheet_info.sheetName
570-
table_name = f"{sheet_name}_{hashlib.sha256(uuid.uuid4().bytes).hexdigest()[:10]}"
571+
table_name = f"excel_{filter_string(sheet_name)}_{hashlib.sha256(uuid.uuid4().bytes).hexdigest()[:10]}"
571572
fields = sheet_info.fields
572573

573574
field_mapping = {f.fieldName: f.fieldType for f in fields}
@@ -617,3 +618,9 @@ def inner():
617618
return {"filename": import_req.filePath, "sheets": results}
618619

619620
return await asyncio.to_thread(inner)
621+
622+
623+
# only allow chinese, a-z, A-Z, 0-9
624+
def filter_string(text):
625+
pattern = r'[^\u4e00-\u9fa5a-zA-Z0-9]'
626+
return re.sub(pattern, '', text)

0 commit comments

Comments
 (0)