文件处理与上传
让用户上传文件是一片悄无声息的雷区,而 AI 的初稿几乎从来不会堵上那些洞:
- 校验类型和大小。 没有限制,就会有人上传一个 10 GB 的文件或一个可执行程序。检查实际的内容,而不只是文件名后缀——后缀谁都能改。
- 永远不要信任文件名。 一个像
../../etc/passwd这样的文件名,可能让一个天真的处理逻辑把文件写到目标文件夹之外(这叫 path traversal,路径穿越)。自己生成安全的文件名,而不是用对方给的那个。 - 不要从和你应用相同的源(origin)上提供上传的文件,也不要让上传的文件被当作代码执行。一个用户提供的文件落进了你服务器会去运行的文件夹,那就是一条直通被接管的路。
这些你不必全都自己造——一个存储服务能帮你搞定大部分——但你得主动去要,因为 AI 不会主动给你。“加一个上传功能”给你的是理想路径。“加一个上传功能,要校验文件类型和大小、除了图片之外一律拒绝、并用生成的文件名来存储”给你的,才是更接近安全的东西。