Код 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
  1. Проверьте IPv4 и домен отдельными функциями.
  2. Ведущий дефис запрещён грамматикой метки.
  3. Подумайте, что делать со строкой из одних чисел с точками.

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

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