fix: 修复多个安全缺陷和功能问题

- 移除加密相关代码(服务端和所有客户端)
- 修复 JWT 验证未检查签名算法的问题
- 修复重置密码使用不安全随机数的问题
- 实现 Logout 服务端失效机制
- 修复历史版本对比 diff 颜色标记错误
- 修复占位符解析循环引用风险
- 添加用户禁用状态检查
- 更新 bug 清单文档
This commit is contained in:
2026-03-10 21:07:22 +08:00
parent f41d53da41
commit 932db9fbdc
27 changed files with 292 additions and 721 deletions
@@ -6,7 +6,6 @@ import requests
from kenaito_conf.cache import Cache
from kenaito_conf.config import Config
from kenaito_conf.crypto import decrypt_config
from kenaito_conf.listener import Listener
logger = logging.getLogger("kenaito_conf")
@@ -18,8 +17,6 @@ class ConfigClient:
self._cache = Cache(config.cache_dir)
self._listener = Listener()
self._configs: dict[str, str] = {}
self._secret: str = ""
self._global_secret: str = ""
self._last_time: int = 0
self._lock = threading.RLock()
self._stop_event = threading.Event()
@@ -75,14 +72,6 @@ class ConfigClient:
if data.get("code", 0) != 0:
raise RuntimeError(f"server error: {data.get('msg', 'unknown')}")
secret = data.get("kenaito.config.encrypt-secret")
if secret:
self._secret = secret
global_secret = data.get("kenaito.config.global-encrypt-secret")
if global_secret:
self._global_secret = global_secret
ts = data.get("latest.fetch.timestamp")
if ts:
self._last_time = int(ts)
@@ -117,8 +106,7 @@ class ConfigClient:
if changed_data:
changed = {}
for k, v in changed_data.items():
decrypted = self._try_decrypt(v)
changed[k] = decrypted
changed[k] = v
with self._lock:
self._configs.update(changed)
@@ -133,13 +121,7 @@ class ConfigClient:
continue
if not isinstance(v, str):
continue
self._configs[k] = self._try_decrypt(v)
def _try_decrypt(self, value: str) -> str:
decrypted = decrypt_config(self._secret, value)
if decrypted == value and self._global_secret:
decrypted = decrypt_config(self._global_secret, value)
return decrypted
self._configs[k] = v
def _sync_loop(self) -> None:
while not self._stop_event.is_set():