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