Be Careful with GIDs in Rails
5 months ago
- #LLM
- #Rails
- #Security
- Rails全局ID(GIDs)是用于在Rails应用中引用模型的字符串句柄,通常格式为`gid://应用名称/模型名/ID`。
- GIDs主要用于ActiveJob序列化,允许任务引用模型而无需序列化其属性。
- GIDs与大型语言模型(LLM)结合使用时可能存在风险,因为它们不会进行授权检查且可能被篡改。
- GIDs的一个关键问题是使用`ActiveRecord::Base.find`方法,该方法可能错误解析非整型ID,导致记录查找错误。
- LLM可能幻觉生成GIDs,从而引发信息泄露或未授权访问等安全风险。
- 建议使用自定义定位器(`LLMSafeLocator`)进行风险控制,该定位器强制执行更严格的验证和授权检查。
- 另一种更安全的替代方案是使用带有特定用途的`signed_id`,相比GIDs更适合LLM交互场景。
- 始终将LLM输入视为不可信的用户输入,以防止安全漏洞。