diff --git a/docs/en/diagnostics/ExternalAppStarting.md b/docs/en/diagnostics/ExternalAppStarting.md index 061fa651c09..59ae54e2bc5 100644 --- a/docs/en/diagnostics/ExternalAppStarting.md +++ b/docs/en/diagnostics/ExternalAppStarting.md @@ -3,14 +3,76 @@ ## Description +To improve the quality and security of 1C solutions, it is necessary to control the launch of external applications from 1C code. + +This rule applies to all methods of launching external programs, including: +- System +- RunSystem +- RunApp +- BeginRunningApplication +- RunAppAsync +- GotoURL or FileSystems.OpenURL +- FileSystemsClient.RunApp (for client side) and FileSystems.RunApp (for server side) +- FileSystemClient.OpenExplorer +- FileSystemClient.OpenFile ## Examples +```bsl +Процедура Метод() + СтрокаКоманды = ""; + ТекущийКаталог = ""; + ДождатьсяЗавершения = Истина; + ОписаниеОповещения = Неопределено; + ПараметрыКоманды = Новый Структура; + + КомандаСистемы(СтрокаКоманды, ТекущийКаталог); // есть замечание + ЗапуститьПриложение(СтрокаКоманды, ТекущийКаталог); // есть замечание + ЗапуститьПриложение(СтрокаКоманды, ТекущийКаталог, Истина); // есть замечание + + НачатьЗапускПриложения(ОписаниеОповещения, СтрокаКоманды, ТекущийКаталог, ДождатьсяЗавершения); // есть замечание + + ПерейтиПоНавигационнойСсылке(СтрокаКоманды); // есть замечание + ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку(СтрокаКоманды); // есть замечание + ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку(СтрокаКоманды, ОписаниеОповещения); // есть замечание + + ФайловаяСистемаКлиент.ЗапуститьПрограмму("ping 127.0.0.1 -n 5", ПараметрыКоманды); // есть замечание + ФайловаяСистемаКлиент.ЗапуститьПрограмму(СтрокаКоманды, ПараметрыКоманды); // есть замечание + ФайловаяСистема.ЗапуститьПрограмму(СтрокаКоманды); // есть замечание + ФайловаяСистема.ЗапуститьПрограмму(СтрокаКоманды, ПараметрыКоманды); // есть замечание + + ФайловаяСистемаКлиент.ОткрытьПроводник("C:\Users"); // есть замечание + ФайловаяСистемаКлиент.ОткрытьФайл(СтрокаКоманды); // есть замечание + ФайловаяСистемаКлиент.ОткрытьФайл(СтрокаКоманды, ОписаниеОповещения); // есть замечание + +КонецПроцедуры + +&НаКлиенте +Асинх Процедура Подключить() + СтрокаКоманды = ""; + ТекущийКаталог = ""; + ДождатьсяЗавершения = Истина; + + Ждать ЗапуститьПриложениеАсинх(СтрокаКоманды, ТекущийКаталог, ДождатьсяЗавершения); // есть замечание +КонецПроцедуры + +&НаКлиенте +Процедура ПроверкаЗапуститьСистему(ДополнительныеПараметрыКоманднойСтроки, КодВозврата) + ДождатьсяЗавершения = Истина; + + ЗапуститьСистему(); // есть замечание + ЗапуститьСистему(ДополнительныеПараметрыКоманднойСтроки); // есть замечание + ЗапуститьСистему(ДополнительныеПараметрыКоманднойСтроки, ДождатьсяЗавершения); // есть замечание + ЗапуститьСистему(ДополнительныеПараметрыКоманднойСтроки, ДождатьсяЗавершения, КодВозврата); // есть замечание +КонецПроцедуры +``` ## Sources +- [Standard: Application launch security (RU)](https://its.1c.ru/db/v8std#content:774:hdoc) +- Standard: [Restriction on the execution of "external" code (RU)](https://its.1c.ru/db/v8std/content/669/hdoc)