Работа с файлами и загрузки
Разрешать пользователям загружать файлы — это тихое минное поле, и первый черновик AI почти никогда не закрывает дыры:
- Проверяйте тип и размер. Без ограничений кто-нибудь загрузит файл на 10 ГБ или исполняемый файл. Проверяйте фактическое содержимое, а не только расширение в имени файла, которое любой может переименовать.
- Никогда не доверяйте имени файла. Имя вида
../../etc/passwdможет заставить наивный обработчик записать файл за пределами предполагаемой папки (это называется path traversal). Генерируйте собственные безопасные имена вместо использования предоставленного. - Не отдавайте загрузки с того же origin, что и ваше приложение, и не позволяйте загруженным файлам исполняться как код. Файл, предоставленный пользователем и попавший в папку, которую ваш сервер запускает, — это прямой путь к захвату.
Вам не обязательно строить всё это самим — большую часть берёт на себя сервис хранения — но просить придётся, потому что сам AI этого не предложит. «Добавь загрузку файлов» даёт вам счастливый путь. «Добавь загрузку файлов, которая проверяет тип и размер, отвергает всё, кроме картинок, и хранит файлы под сгенерированными именами» даёт вам что-то близкое к безопасному.