Код Middle Инъекции: SQL, NoSQL, команды обновлено
Безопасные аргументы для вызова ping
Условие
Напишите ping_args(host), которая готовит аргументы для subprocess.run без шелла. Если host допустим, верните ["ping", "-c", "1", host], иначе None.
Допустимый host:
- IPv4 в виде четырёх чисел 0-255 через точку (
8.8.8.8), без ведущих нулей у многозначных чисел; - или доменное имя: метки из латинских букв, цифр и дефиса через точку, метка от 1 до 63 символов, не начинается и не заканчивается дефисом, всего не длиннее 253 символов.
Всё остальное, включая пустую строку, пробелы, ;, | и значения с ведущим -, недопустимо.
Примеры
ping_args("8.8.8.8") // ["ping", "-c", "1", "8.8.8.8"]
ping_args("example.com") // ["ping", "-c", "1", "example.com"]
ping_args("8.8.8.8; cat /etc/passwd") // null
Как подойти
Подсказки: 3
- Проверьте IPv4 и домен отдельными функциями.
- Ведущий дефис запрещён грамматикой метки.
- Подумайте, что делать со строкой из одних чисел с точками.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.