描述bug
当使用API流式传输聊天输出时,流URL端点是开放的。这可能导致如果两个设备调用相同的端点,消息泄露的可能性。
重现问题
重现行为所需的步骤:
- 使用playground的基本流程进行调用
- 转到任何浏览器或设备并访问:http://<YOUR_ADDR>/api/v1/build/<YOUR_FLOW_ID>/<CHAT_OUTPUT_ID>/stream。
示例:( https://langflow.brasil.com/api/v1/build/90deb8be-4e8c-422a-b35f-45042a2c49c9/ChatOutput-EzD73/stream ) - 两个设备都可以访问相同的输出,提供的URL上没有身份验证或随机性。
附加上下文
问题在于,当前的langflow实现使得使用API和流式传输多用户应用程序变得不可能。
1条答案
按热度按时间cs7cruho1#
你好,@rafael-junio!我在这里帮助你解决任何bug、问题或贡献。让我们一起解决这个问题!
为了保护API流端点并防止两个设备调用相同端点时的未经授权访问和消息泄露,你可以实施以下措施:
这是提供了这些安全措施的更新后的代码:
在这个更新后的代码中:
generateSessionId
方法为每个会话生成唯一的会话ID。Authorization
头和x-api-key
头来保护API端点。此外,
ApiInterceptor
来自langflow
项目确保将访问令牌添加到请求中,并处理令牌更新和错误管理 1(https://github.com/langflow-ai/langflow/blob/dev/src/frontend/src/modals/apiModal/utils/get-js-api-code.tsx)2(https://github.com/langflow-ai/langflow/blob/dev/src/frontend/src/controllers/API/api.tsx)3(https://github.com/logspace-ai/langflow/blob/dev/src/frontend/src/controllers/API/api.tsx)。