Файловые заметки
Учебный проект 4 из 12: Атомарная запись, блокировка, безопасные имена и ограничение размера.
Файловые заметкиПостановка
Атомарная запись, блокировка, безопасные имена и ограничение размера.
Архитектура
NoteRepository принимает идентификатор, но сам строит безопасное имя файла; Serializer отвечает за формат, LockGuard — за согласованную запись.
Этапы
Реализуйте чтение одной заметки, атомарную запись во временный файл с rename, список metadata и контролируемое удаление в корзину.
Безопасность
Запретите разделители пути и NUL, проверьте итоговый realpath внутри каталога данных, ограничьте размер и не размещайте хранилище под публичным web‑root.
Чек-лист
Проверьте конфликт двух записей, оборванный временный файл, `../`, Unicode‑имя, пустую заметку и восстановление после неудачного rename.
Закрепите материал
Отметка, заметка, чек-лист и ответы остаются в localStorage этого браузера и не отправляются в аналитику.
Связанные материалы
Источники и проверка
- PHP Documentation Group — структурный источник, без внешней ссылки
Последняя содержательная проверка: . Автор-разработчик Михаил Каржин. Методика качества контента.