Имя: Пароль:
1C
1С v8
Безопасность запуска приложений
0 bborisko
 
10.12.22
16:15
На ITS описано требование. Расскажите подробнее чем опасны данные символы в командной строке. Может примеры кто то приведет.

При запуске внешней программы из кода требуется составлять строку запуска таким образом, чтобы она собиралась только из проверенных частей.
Если одна из частей, из которых собирается строка запуска, содержит данные, полученные из базы данных, из поля ввода на форме или прочитаны из хранилища настроек, то перед запуском программы требуется проверить, являются ли запуск безопасным. Безопасными считаются такие строковые данные, которые не содержат в себе следующие символы: "$", "`", "|", "||" ";", "&", "&&".

Данное требование распространяется на все способы запуска программы, в том числе:

КомандаСистемы(<СтрокаКоманды>, <ТекущийКаталог>)
ЗапуститьПриложение(<СтрокаКоманды>, <ТекущийКаталог>, <ДождатьсяЗавершения>, <КодВозврата>) ;
НачатьЗапускПриложения(<ОписаниеОповещения>, <СтрокаКоманды>, <ТекущийКаталог>, <ДождатьсяЗавершения>);
ПерейтиПоНавигационнойСсылке(<НавигационнаяСсылка>);
Использование COM объектов "Wscript.Shell" и "Shell.Application".
1 DJ Anthon
 
10.12.22
16:47
2 ДедМорроз
 
11.12.22
16:57
На самом деле,если строка - это параметр команды,то все служебные символы в ней должны экранироваться.
Для linux,например,параметр /tmp/* иногда приводит к большой печали,так как выбираются все файлы в директории.
Символы & разделяют команды,и вторая часть параметра будет отдельной командой.
Символ | аналогично,но это перенаправление вывода текущей команды на вход указанной после.
Символ ` это вычисление выражения в этих кавычках как отдельной команды.
3 ДедМорроз
 
11.12.22
17:01
А вообще,даже без всяких этих символов можно,например,указать путь до конфишурационного файла сервера 1с и перезаписать его на сервере.
Поэтому,желательно,вызов внешних приложений использовать только в исключительном случае.
На клиенте,конечно,без этого очень тяжело,но если сделать заготовки для всех действий,чтобы нельзя было мделать что-то неожиданное.