一项对 159,041 个 Lovable 生成项目的扫描发现,其中有项目在完全未登录的情况下能读到护照信息,另有超过 20 万条私信处于可读取状态。研究者没有逐个入侵,只是用浏览器直接请求这些项目背后的数据接口。
这类工具的工作方式决定了问题的形态。用户描述需求,模型产出表结构、接口调用和页面,一次生成里同时包含前端与后端。数据不经过使用者自己的服务器,浏览器拿着一条随前端代码下发的公开凭据,直接和数据库对话。这条凭据谁打开页面都能拿到,所以访问控制落在数据库的授权策略上:哪张表允许匿名读、哪张表要求已登录、哪张表只能由本人读写。
生成过程里,这一步最容易被跳过,也最难被看见。页面能打开、表单能提交、列表能刷新,功能就算完成;匿名全开的策略在本地调试时最省事,部署时一并沿用。开发者从浏览器里看到的界面是正常的:被隐藏的删除按钮、被过滤的他人数据,看上去像权限已经生效。这些只是界面层的行为,直接对接口发请求的人不受它约束。
资料未说明这些项目具体使用哪类后端、策略如何编写。从“未登录即可读”这个结果反推,至少这些项目的数据库把匿名角色的读权限放开了,或者把校验写在了前端。扫描方对受影响范围的表述是“许多项目”,具体比例未给出。
验证方式没有别的:退出登录,清掉 cookie,用页面里能拿到的 key 和接口地址逐张表请求,看返回什么。用管理员账号测、看界面上有没有按钮,都测不出这个问题。
生成式建站工具把大量没有后端经验的用户带进了这个模式,权限配置成了他们既不知道存在、也无从检查的一步。策略改回来只是止损,此前暴露的数据有没有被读过,要看数据库访问日志,而这类日志的保留期通常有限。平台是否会在模板层把匿名读写改成默认拒绝,资料未说明。在此之前,用这类工具上线的项目,先按未登录身份把自己的接口跑一遍,是最直接的下一步。
评论
还没有公开评论,欢迎留下第一条讨论。