Просмотр исходного кода

fix(任务合同): 避免深层控制 URI 被误判为 Base64

控制 URI 仅对完整路径段执行长 Base64 检测,普通文本仍保留原有防内嵌内容校验。修复合法的深层 script-build URI 因连续字符过长而被错误拒绝的问题。
SamLee 20 часов назад
Родитель
Сommit
ccde09fd1f
1 измененных файлов с 6 добавлено и 1 удалено
  1. 6 1
      script_build_host/src/script_build_host/domain/task_contracts.py

+ 6 - 1
script_build_host/src/script_build_host/domain/task_contracts.py

@@ -564,7 +564,12 @@ def _require_bounded_text(value: str, label: str, maximum: int) -> None:
             "TASK_CONTRACT_INVALID", f"{label} must contain between 1 and {maximum} characters"
         )
     lowered = value.casefold()
-    if "data:" in lowered or _LONG_BASE64.search(value):
+    encoded_blob = (
+        any(_LONG_BASE64.fullmatch(segment) for segment in value.split("/"))
+        if value.startswith(_CONTROL_URI_PREFIX)
+        else _LONG_BASE64.search(value) is not None
+    )
+    if "data:" in lowered or encoded_blob:
         raise TaskContractError(
             "TASK_CONTRACT_INVALID", f"{label} must not embed encoded candidate content"
         )