Skip to content

Commit

Permalink
устранены ошибки безопасности
Browse files Browse the repository at this point in the history
  • Loading branch information
denisushakov committed Apr 15, 2024
1 parent 3163a51 commit 896aed1
Show file tree
Hide file tree
Showing 8 changed files with 231 additions and 12 deletions.
15 changes: 5 additions & 10 deletions src/CommonModules/__КоннекторHTTP/Ext/Module.bsl
Original file line number Diff line number Diff line change
Expand Up @@ -1998,17 +1998,12 @@
КонецФункции

Функция ПроксиПоУмолчанию(URL)

ПроксиПоУмолчанию = Новый ИнтернетПрокси;
// BSLLS:ExecuteExternalCodeInCommonModule-off
ИмяОМПолученияФайловБСП = "ПолучениеФайловИзИнтернета";
Если Метаданные.ОбщиеМодули.Найти(ИмяОМПолученияФайловБСП) <> Неопределено Тогда
СтруктураURL = РазобратьURL(URL);
Модуль = Вычислить(ИмяОМПолученияФайловБСП);
ПроксиПоУмолчанию = Модуль.ПолучитьПрокси(СтруктураURL.Схема);
КонецЕсли;
// BSLLS:ExecuteExternalCodeInCommonModule-on


СтруктураURL = РазобратьURL(URL);
ПроксиПоУмолчанию = __ПолучениеФайловИзИнтернетаСлужебный.ПолучитьПрокси(СтруктураURL.Схема);

Возврат ПроксиПоУмолчанию;

КонецФункции
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -850,6 +850,7 @@
// Точка входа, где можно попытаться проверить подключена ли БСП
Если Метаданные.ОбщиеМодули.Найти("СтандартныеПодсистемыСервер") <> Неопределено Тогда
Попытка
УстановитьБезопасныйРежим(Истина);
МодульБСП = Вычислить("СтандартныеПодсистемыСервер");

Check failure on line 854 in src/CommonModules/__ОбщегоНазначенияСервер/Ext/Module.bsl

View check run for this annotation

sonar.openbsl.ru qa-bot / 1C: Project SubSystems Library Sonarqube Results

src/CommonModules/__ОбщегоНазначенияСервер/Ext/Module.bsl#L854

Выполнение произвольного кода в общем модуле на сервере является потенциальной уязвимостью
ВерсияБСП = МодульБСП.ВерсияБиблиотеки();
Исключение
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -481,10 +481,8 @@
НСтр("ru = 'Объект метаданных ""%1"" не существует.'"), Имя);
КонецЕсли;

// АПК:488-выкл ВычислитьВБезопасномРежиме не используется, чтобы избежать вызова ОбщийМодуль рекурсивно.
УстановитьБезопасныйРежим(Истина);
Модуль = Вычислить(Имя);

Check failure on line 485 in src/CommonModules/__ОбщегоНазначенияСлужебный/Ext/Module.bsl

View check run for this annotation

sonar.openbsl.ru qa-bot / 1C: Project SubSystems Library Sonarqube Results

src/CommonModules/__ОбщегоНазначенияСлужебный/Ext/Module.bsl#L485

Выполнение произвольного кода в общем модуле на сервере является потенциальной уязвимостью
// АПК:488-вкл

Возврат Модуль;
КонецФункции
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.16">
<CommonModule uuid="1ded4803-1062-46a6-9288-889259baa395">
<Properties>
<Name>__ПолучениеФайловИзИнтернета</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Получение файлов из Интернета</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Global>false</Global>
<ClientManagedApplication>false</ClientManagedApplication>
<Server>true</Server>
<ExternalConnection>true</ExternalConnection>
<ClientOrdinaryApplication>true</ClientOrdinaryApplication>
<ServerCall>false</ServerCall>
<Privileged>false</Privileged>
<ReturnValuesReuse>DontUse</ReturnValuesReuse>
</Properties>
</CommonModule>
</MetaDataObject>
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
// Библиотека проектных подсистем для упрощения разработки архитектуры на 1С: Предприятие 8,
// включая доработку типовых конфигураций.
//
// Copyright 2017-2024 First BIT company
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
//
// URL: https://github.com/firstBitSportivnaya/PSSL/
// e-mail: [email protected]
// Версия: 1.0.0.1
//
// Требования: платформа 1С версии 8.3.17 и выш

#Область ПрограммныйИнтерфейс

// Аналог метода БСП. Возвращает объект ИнтернетПрокси для доступа в Интернет.
// Допустимые протоколы для создания ИнтернетПрокси http, https, ftp и ftps.
//
// Параметры:
// URLИлиПротокол - Строка - url в формате [Протокол://]<Сервер>/<Путь к файлу на сервере>,
// либо идентификатор протокола (http, ftp, ...).
//
// Возвращаемое значение:
// ИнтернетПрокси - описывает параметры прокси-серверов для различных протоколов.
// Если не удалось распознать схему сетевой протокол,
// то будет создать прокси на основании протокола HTTP.
//
Функция ПолучитьПрокси(Знач URLИлиПротокол) Экспорт

НастройкиПрокси = __ОбщегоНазначенияСлужебный.ХранилищеОбщихНастроекЗагрузить("НастройкаПроксиСервера", "");
Возврат НовыйИнтернетПрокси(НастройкиПрокси, URLИлиПротокол);

КонецФункции

// Аналог метода БСП. Возвращает прокси по настройкам НастройкаПроксиСервера для заданного протокола Протокол.
//
// Параметры:
// НастройкаПроксиСервера - Соответствие из КлючИЗначение:
// * Ключ - Строка - см. ниже список возможных ключей.
// * Значение - Произвольный
// ИспользоватьПрокси - Булево - использовать ли прокси-сервер.
// НеИспользоватьПроксиДляЛокальныхАдресов - использовать ли прокси-сервер для локальных адресов.
// НеИспользоватьПроксиДляАдресов - Массив из Строка
// ИспользоватьСистемныеНастройки - Булево - использовать ли системные настройки прокси-сервера.
// Сервер - Строка - адрес прокси-сервера.
// Порт - Строка - порт прокси-сервера.
// Пользователь - Строка - имя пользователя для авторизации на прокси-сервере.
// Пароль - Строка - пароль пользователя.
// ИспользоватьАутентификациюОС - Булево - признак использования аутентификации средствами операционной системы.
// URLИлиПротокол - Строка - адрес ресурса или протокол, для которого устанавливаются параметры прокси сервера,
// например "https://1c.ru", "http", "https", "ftp", "ftps".
//
// Возвращаемое значение:
// ИнтернетПрокси
//
Функция НовыйИнтернетПрокси(НастройкаПроксиСервера, URLИлиПротокол) Экспорт

Check warning on line 67 in src/CommonModules/__ПолучениеФайловИзИнтернета/Ext/Module.bsl

View check run for this annotation

sonar.openbsl.ru qa-bot / 1C: Project SubSystems Library Sonarqube Results

src/CommonModules/__ПолучениеФайловИзИнтернета/Ext/Module.bsl#L67

Необходимо удалить описания параметров "ИспользоватьПрокси, НеИспользоватьПроксиДляАдресов, ИспользоватьСистемныеНастройки, Сервер, Порт, Пользователь, Пароль, ИспользоватьАутентификациюОС", отсутствующих в сигнатуре метода

Если НастройкаПроксиСервера = Неопределено Тогда
// Системные установки прокси-сервера.
Возврат Неопределено;
КонецЕсли;

ИспользоватьПрокси = НастройкаПроксиСервера.Получить("ИспользоватьПрокси");
Если Не ИспользоватьПрокси Тогда
// Не использовать прокси-сервер.
Возврат Новый ИнтернетПрокси(Ложь);
КонецЕсли;

ИспользоватьСистемныеНастройки = НастройкаПроксиСервера.Получить("ИспользоватьСистемныеНастройки");
Если ИспользоватьСистемныеНастройки Тогда
// Системные настройки прокси-сервера.
Возврат Новый ИнтернетПрокси(Истина);
КонецЕсли;

ИспользоватьАутентификациюОС = НастройкаПроксиСервера.Получить("ИспользоватьАутентификациюОС");
ИспользоватьАутентификациюОС = ?(ИспользоватьАутентификациюОС = Истина, Истина, Ложь);

ДополнительныеНастройки = НастройкаПроксиСервера.Получить("ДополнительныеНастройкиПрокси");
Если ТипЗнч(ДополнительныеНастройки) <> Тип("Соответствие") Тогда
ДополнительныеНастройки = Новый Соответствие;
КонецЕсли;

// Настройки прокси-сервера, заданные вручную.
Прокси = Новый ИнтернетПрокси;

Протоколы = СтрРазделить("http,https,ftp,ftps", ",", Ложь);
Для Каждого Протокол Из Протоколы Цикл
АдресСервера = НастройкаПроксиСервера["Сервер"];
Порт = НастройкаПроксиСервера["Порт"];

ПроксиПоПротоколу = ДополнительныеНастройки[Протокол];
Если ТипЗнч(ПроксиПоПротоколу) = Тип("Структура") Тогда
АдресСервера = ПроксиПоПротоколу.Адрес;
Порт = ПроксиПоПротоколу.Порт;
КонецЕсли;

Если Не ЗначениеЗаполнено(Порт) Тогда
Порт = Неопределено;
КонецЕсли;

Прокси.Установить(Протокол, АдресСервера, Порт,
НастройкаПроксиСервера["Пользователь"], НастройкаПроксиСервера["Пароль"], ИспользоватьАутентификациюОС);
КонецЦикла;

Прокси.НеИспользоватьПроксиДляЛокальныхАдресов = НастройкаПроксиСервера["НеИспользоватьПроксиДляЛокальныхАдресов"];

АдресаИсключений = НастройкаПроксиСервера.Получить("НеИспользоватьПроксиДляАдресов");
Если ТипЗнч(АдресаИсключений) = Тип("Массив") Тогда
Для каждого АдресИсключения Из АдресаИсключений Цикл
Прокси.НеИспользоватьПроксиДляАдресов.Добавить(АдресИсключения);
КонецЦикла;
КонецЕсли;

Возврат Прокси;

КонецФункции

#КонецОбласти
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.16">
<CommonModule uuid="0b6ffdaf-5807-4db1-bf5a-cae3644d1400">
<Properties>
<Name>__ПолучениеФайловИзИнтернетаСлужебный</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Получение файлов из Интернета служебный</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Global>false</Global>
<ClientManagedApplication>false</ClientManagedApplication>
<Server>true</Server>
<ExternalConnection>true</ExternalConnection>
<ClientOrdinaryApplication>true</ClientOrdinaryApplication>
<ServerCall>false</ServerCall>
<Privileged>false</Privileged>
<ReturnValuesReuse>DontUse</ReturnValuesReuse>
</Properties>
</CommonModule>
</MetaDataObject>
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
// Библиотека проектных подсистем для упрощения разработки архитектуры на 1С: Предприятие 8,
// включая доработку типовых конфигураций.
//
// Copyright 2017-2024 First BIT company
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
//
// URL: https://github.com/firstBitSportivnaya/PSSL/
// e-mail: [email protected]
// Версия: 1.0.0.1
//
// Требования: платформа 1С версии 8.3.17 и выш

#Область СлужебныйПрограммныйИнтерфейс

#Область ПереадресацияМетодов

// См. __ПолучениеФайловИзИнтернета.ПолучитьПрокси.
Функция ПолучитьПрокси(Знач URLИлиПротокол) Экспорт

Check warning on line 30 in src/CommonModules/__ПолучениеФайловИзИнтернетаСлужебный/Ext/Module.bsl

View check run for this annotation

sonar.openbsl.ru qa-bot / 1C: Project SubSystems Library Sonarqube Results

src/CommonModules/__ПолучениеФайловИзИнтернетаСлужебный/Ext/Module.bsl#L30

Добавьте описание возвращаемого значения функции

Check warning on line 30 in src/CommonModules/__ПолучениеФайловИзИнтернетаСлужебный/Ext/Module.bsl

View check run for this annotation

sonar.openbsl.ru qa-bot / 1C: Project SubSystems Library Sonarqube Results

src/CommonModules/__ПолучениеФайловИзИнтернетаСлужебный/Ext/Module.bsl#L30

Необходимо добавить описание всех параметров метода

Модуль = ПолучитьМодуль();
Возврат Модуль.ПолучитьПрокси(URLИлиПротокол);

КонецФункции

#КонецОбласти

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

Функция ПолучитьМодуль()
Возврат __ОбщегоНазначенияПовтИсп.ПолучитьОбщийМодуль("ПолучениеФайловИзИнтернета", "__ПолучениеФайловИзИнтернета");
КонецФункции

#КонецОбласти

Check notice on line 48 in src/CommonModules/__ПолучениеФайловИзИнтернетаСлужебный/Ext/Module.bsl

View check run for this annotation

sonar.openbsl.ru qa-bot / 1C: Project SubSystems Library Sonarqube Results

src/CommonModules/__ПолучениеФайловИзИнтернетаСлужебный/Ext/Module.bsl#L48

Удалите лишние последовательные пустые строки
2 changes: 2 additions & 0 deletions src/Configuration.xml
Original file line number Diff line number Diff line change
Expand Up @@ -311,6 +311,8 @@
<CommonModule>__Пользователи</CommonModule>
<CommonModule>__ПользователиСлужебный</CommonModule>
<CommonModule>__ПользователиКлиентСервер</CommonModule>
<CommonModule>__ПолучениеФайловИзИнтернета</CommonModule>
<CommonModule>__ПолучениеФайловИзИнтернетаСлужебный</CommonModule>
<EventSubscription>__ДокументыОбработкаЗаполнения</EventSubscription>
<EventSubscription>__ДокументыОбработкаПроведения</EventSubscription>
<EventSubscription>__ДокументыПередЗаписью</EventSubscription>
Expand Down

0 comments on commit 896aed1

Please sign in to comment.