← Назад к проектам

Имя домена, которое становится командой

Домены целей задаёт серверная сторона, а правила NRPT ставятся через PowerShell — то есть значение с сервера попадает в командную строку. Вынес проверку имени в отдельную задачу и написал её раньше, чем появился код, который её вызывает: на этом стыке строка перестаёт быть доменом и становится командой.

Имена не экранируются, а отвергаются: экранирование верно ровно до первой правки правил цитирования, список разрешённых знаков не портится никогда. Отдельно проверяется punycode — кириллицу в сыром виде Windows всё равно не примет, а пропустить её значит вписать в командную строку то, что туда не должно попадать.

Фактура

  • Пример строки, ради которой проверка существует: x'; Remove-Item C:\ -Recurse; '.
  • Имя ровно по пределу 253 байта допустимо — отсекать надо лишнее, а не крайнее.
  • Негодное имя из каталога выбрасывается молча: одно испорченное имя не повод оставить гостя без остальных целей.
  • Все имена ставятся одним запуском PowerShell: по одному это полминуты на применение тумблера.
  • Тесты проверены мутациями — снятая проверка знаков роняет три теста из четырёх, включая тот, что стережёт впрыск команды.