eval 的安全隐患
在 LangGraph CodeAct 的生产环境部署中,直接使用 Python 内置的 eval
执行生成的代码存在严重安全隐患:
- 代码注入风险:可能执行恶意构造的代码
- 系统权限问题:可以访问系统资源和敏感信息
- 稳定性影响:可能导致程序崩溃或资源耗尽
安全执行方案
推荐使用专门的代码沙盒来实现安全执行:
- 进程隔离:在单独的进程中运行代码
- リソース制約:限制 CPU、内存等资源使用
- 特権制御:降低执行权限,限制文件访问
- 超时处理:设置执行时间上限
自定义沙盒实现
文章提供了一个基础示例:
def custom_sandbox(code: str, _locals: dict) -> tuple[str, dict]:
try:
with open("temp.py", "w") as f:
f.write(code)
import subprocess
result = subprocess.check_output(["python", "temp.py"], text=True)
return result, {}
except Exception as e:
return f"错误: {e}", {}
这个实现通过将代码写入临时文件并通过子进程执行,提供了基本的安全隔离。
专业方案推荐
对于企业级应用,建议考虑使用成熟的沙盒解决方案如:
- Docker 容器
- 专用代码沙盒服务
- 云函数执行环境
この答えは記事から得たものである。LangGraph CodeAct:複雑なタスクを解決する知能を支援するコード生成について