Код Junior Безопасность веб-приложения обновлено

Безопасное имя загружаемого файла

Условие

Напишите safe_filename(name, allowed): из имени файла пользователя оставьте только базовое имя (после последнего / или \), замените всё, кроме латинских букв, цифр, ., -, _, на _, уберите ведущие точки, ограничьте основу имени 50 символами (расширение сохраняется). Расширение (после последней точки, в нижнем регистре) должно быть в allowed, иначе верните None. Пустая основа после очистки тоже None.

Примеры

safe_filename("photo.JPG", ["jpg", "png"]) // "photo.jpg"
safe_filename("../../etc/passwd", ["jpg"]) // null
safe_filename("..\\..\\avatar.png", ["png"]) // "avatar.png"

Как подойти

Подсказки: 2
  1. Разделители путей: / и \.
  2. Расширение по белому списку, последнее после точки.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.

Термины по теме