Цитата |
---|
Николай написал: сканер безопасности на нее ругается как отключить. |
Вы хотите отключить доп.опцию которую сделал программист? или чтобы сканер не ругался на этот файл?
Чтобы сканер не ругался нужно добавить страницу в исключения(!):
1) Админка — Настройки — Проактивная защита — Проактивный фильтр
2) Админка — Настройки — Проактивная защита — Веб-антивирус
3) Админка — Настройки — Проактивная защита — Защита от фреймов
Плюс, хорошо было бы просмотреть содержимое файла на предмет явных уязвимостей.
При проверке обнаружена уязвимость Cross-Site Scripting
ID статьи: 154
, создана 28 окт 2016
При анализе уязвимостей было обнаружено проблемное место.
Решение
Внимание! Статья предназначена для пользователей решения, владеющими основами веб-разработки. Если вы не обладаете базовыми знаниями в программировании и хотите скрыть предупреждение, свяжитесь с нами через поддержку.
Обычно предупреждение отображается со следующим сопроводительным текстом:
Статический анализ уязвимостей обнаружил 1 проблемных мест Важно!Cross-Site Scripting
Файл: /_!/bitrix/tmp/templates/__bx_preview/components/aspro/oneclickbuy/shop/template.php
53: $arSkuProps = explode ( ";" , $_REQUEST [ 'OFFER_PROPS' ] )
55: echo serialize ( $arSkuProps )
Необходимые условия:
52: if ( $_REQUEST [ 'OFFER_PROPS' ] )
Разрешено подключение файлов по URL (URL wrappers) Важно!
Эта опция php крайне противопоказана
Данный код не опасен и является частью решения. Код отвечает за передачу свойств торговых предложений в заказ из формы покупки в 1 клик.
При появлении предупреждения вы можете указать в настройках php следующий код:
allow_url_include = Off Свернуть
Запустил сканер безопасности который выявил проблемы такого рода
Cross-Site Scripting
Файл: /home/bitrix/ext_www/sitename/bitrix/templates/market_column_1/bxready/library/elements/ecommerce_v1/element.php
303: echo $_COOKIE['_ym_uid']
Необходимые условия:
90: if($arElement['IBLOCK_SECTION_ID'] !== "869")
Аналогично:
311: echo $_COOKIE['_ym_uid']
319: echo $_COOKIE['_ym_uid']
и таких косяков статический анализатор нарыл 10 штук
Что это означает и как вы с этим боретесь?
ps: всем желаю крепкого здоровья, много любви и денег, а ещё не сталкиваться с битриксом
да читал — сейчас список рекомендаций напротив тестов
1. Используется проактивная защита. Минимальный уровень — «Стандартный» — Выявлены следующие недочеты:
1. Уровень безопасности административной группы не является повышенным — хотя я в настройках поставил уровень повышенный?
2. Административные учетные записи — защищены —
В разделе «Настройки > Пользователи > Группы пользователей > Администраторы (ID группы = 1) на вкладке «Безопасность» в списке «Предопределенные настройки уровня безопасности» должно быть установлено значение «Повышенный» (или выше).
Там же на вкладке «Параметры» в разделе «Пользователи в группе» проверьте, какие учетные записи включены в группу «Администраторы». Для них необходимо включить использование одноразовых паролей.
В разделе «Настройки > Проактивная защита > Одноразовые пароли» должно быть включено использование одноразовых паролей.
В форме редактирования параметров каждой административной учетной записи: «Настройки > Пользователи > Список пользователей» на вкладке «Одноразовые пароли» должно быть настроено и включено их использование.
Также рекомендуется, при необходимости, использовать повышенный уровень безопасности (и возможно одноразовые пароли) для учетных записей других привилегированных групп, таких как администраторы магазина, администраторы каталогов и т.п.
5. Настроены политики безопасности по работе с БД — 1. Пароль к БД не содержит знаков препинания
6. Отключен вывод ошибок и предупреждений посетителям проект -1 1. Включен вывод ошибок пользователям — как Отключить?
8. Проверена безопасность кода (статический анализ уязвимостей)
Файл: /extranet/pk/ajax_cell_change.php
PHP | ||
|
Файл: /extranet/pk/ajax_cell_change.php
PHP | ||
|
Файл: /extranet/pk/ajax_cell_change.php
Cross-Site Scripting
14:
PHP | ||
|
Файл: /extranet/lector/ajax_del_publication.php
Cross-Site Scripting
90:
HTML5 | ||
|
Необходимые условия:
?
Файл: /extranet/lector/ajax_add_publication.php
Cross-Site Scripting
86:
PHP | ||
|
Необходимые условия:
?
Файл: /extranet/pk_admin/ajax_cell_change.php
Cross-Site Scripting
PHP | ||
|
Файл: /extranet/pk_admin/ajax_cell_change.php
Cross-Site Scripting
11:
PHP | ||
|
Файл: /extranet/pk_admin/ajax_cell_change.php
Cross-Site Scripting
13:
PHP | ||
|
Файл: /extranet/pk_admin/ajax_cell_change.php
Cross-Site Scripting
PHP | ||
|
Файл: /extranet/dispetcher/ajax_filter_aud.php
Cross-Site Scripting
PHP | ||
|
Файл: /extranet/dispetcher/ajax_contract_compile.php
Выполнение произвольных команд
PHP | ||
|
Аналогично:
PHP | ||
|
Файл: /extranet/lector/pozhelanya/ajax_filter_aud.php
Cross-Site Scripting
PHP | ||
|
Файл: /extranet/lector/pozhelanya/ajax_contract_compile.php
Выполнение произвольных команд
PHP | ||
|
Аналогично:
PHP | ||
|
Файл: /extranet/heads/shtaty/ajax_get_parent_hours.php
Cross-Site Scripting
PHP | ||
|
Необходимые условия:
PHP | ||
|
Файл: /extranet/heads/shtaty/podpis_init_action.php
Cross-Site Scripting
PHP | ||
|
Аналогично:
PHP | ||
|
Файл: /extranet/heads/shtaty/sotrudnik_init_action.php
Cross-Site Scripting
PHP | ||
|
Необходимые условия:
PHP | ||
|
Аналогично:
HTML5 | ||
|
Для добавления нового сотрудника заполните все поля формы! </form>’
?
Файл: /extranet/heads/shtaty/init_action.php
Cross-Site Scripting
8:
PHP | ||
|
Необходимые условия:
3: if(CModule::includemodule(«iblock»))
?
Файл: /extranet/heads/shtaty/podpis_action.php
Cross-Site Scripting
PHP | ||
|
9. Проверка сканером безопасности 1
Отсутствуют критические замечания в разделе «Настройки > Проактивная защита > Сканер безопасности». Информация о результатах сканирования не является устаревшей.
Как тестировать
Платформа имеет встроенный набор автотестов для проверки на предмет наличия распространенных уязвимостей. Часть тестов проводится с внешних серверов 1С-Битрикс. Для безопасной работы веб-проекта все критические угрозы должны быть устранены.
В разделе «Настройки > Проактивная защита > Сканер безопасности» не должно быть обнаружено критических угроз.
Как решить? — напишите напротив каждого пункта?
Проблема модуля Битрикс
При сдаче одного из проектов по программе “Монитор качества” Битрикс, мы столкнулись с ошибкой в бесплатном модуле “Модуль приема платежей Тинькофф Банк”, монитор качества пожаловался на ошибку уязвимости “Проверена безопасность кода (статический анализ уязвимостей) (QSEC0080)”. А так как модуль это официальный от Тинькофф, мы во время работы над проектом не стали сразу исправлять, хотя и писали в службу поддержки. Пока проект делался, было не актуально, но при сдаче проекта, решили ее исправить и выложить решение, чтобы помочь другим.
Решение проблемы «Модуль приема платежей Тинькофф Банк»
Мы также вам можем помочь с техническим сопровождением сайтов на 1С Битрикс
Всегда будем рады вашему обращению
Заказать техподдержку
При проверке вы увидите такое сообщение в “Мониторе качества”
Предлагается решение:
Межсайтовый скриптинг (XSS) уязвимость возникает тогда, когда данные, принятые от пользователя, выводятся в браузер без надлежащей фильтрации. Уязвимость может быть использована для изменения вида HTML страниц уязвимого сайта в контексте браузера целевого пользователя, похищения COOKIE данных браузера целевого пользователя, с последующим внедрением в его сессию, под его учетной записью.
Как защищаться
Использовать htmlspecialcharsbx. Параметры тегов с динамическими значениями ограничивать двойными кавычками. Принудительно добавлять протокол (http), где это необходимо, для значений параметров тегов, таких как href или src.
В подробном отчете следующий список ошибок
Вот перечень ошибок в модуле:
Файл: /personal/order/success.php
Cross-Site Scripting
15: $orderID = $_REQUEST['OrderId']
29: echo sprintf(getmessage("SALE_TINKOFF_SUCCESS_TEXT"),$orderID,$status,$statusPageURL)
Необходимые условия:
26: if($order)
Файл: /personal/order/success.php
Cross-Site Scripting
28: $statusPageURL = sprintf('%s/%s',getpagepath('personal/orders'),$orderID)
29: echo sprintf(getmessage("SALE_TINKOFF_SUCCESS_TEXT"),$orderID,$status,$statusPageURL)
Необходимые условия:
26: if($order)
Файл: /personal/order/success.php
Cross-Site Scripting
15: $orderID = $_REQUEST['OrderId']
31: echo sprintf(getmessage("SALE_TINKOFF_FAIL_TEXT"),$orderID)
Необходимые условия:
30: else
Файл: /personal/order/failed.php
Cross-Site Scripting
15: $orderID = $_REQUEST['OrderId']
29: echo sprintf(getmessage("SALE_TINKOFF_SUCCESS_TEXT"),$orderID,$status,$statusPageURL)
Необходимые условия:
26: if($order)
Файл: /personal/order/failed.php
Cross-Site Scripting
28: $statusPageURL = sprintf('%s/%s',getpagepath('personal/orders'),$orderID)
29: echo sprintf(getmessage("SALE_TINKOFF_SUCCESS_TEXT"),$orderID,$status,$statusPageURL)
Необходимые условия:
26: if($order)
Файл: /personal/order/failed.php
Cross-Site Scripting
15: $orderID = $_REQUEST['OrderId']
31: echo sprintf(getmessage("SALE_TINKOFF_FAIL_TEXT"),$orderID)
Необходимые условия:
30: else
Чтобы исправить эти все ошибки одним разом, надо открыть файл:
/bitrix/modules/tinkoff.payment/install/sale_payment/tinkoff/result.php
Найти часть кода
if (!$order) {
$arFilter = array(
"ACCOUNT_NUMBER" => $orderID,
);
$accountNumberList = CSaleOrder::GetList(array("ACCOUNT_NUMBER" => "ASC"), $arFilter);
$order = $accountNumberList->arResult[0];
}
if ($order) {
$status = $_REQUEST['Success'] == 'true' ? GetMessage("SALE_TINKOFF_SUCCESS") : GetMessage("SALE_TINKOFF_FAIL");
$statusPageURL = sprintf('%s/%s',GetPagePath('personal/orders'), $orderID);
echo sprintf(GetMessage("SALE_TINKOFF_SUCCESS_TEXT"), $orderID, $status, $statusPageURL);
} else {
echo sprintf(GetMessage("SALE_TINKOFF_FAIL_TEXT"), $orderID);
}
Его заменяем на:
if (!$order) {
$arFilter = array(
"ACCOUNT_NUMBER" => $orderID,
);
$accountNumberList = CSaleOrder::GetList(array("ACCOUNT_NUMBER" => "ASC"), $arFilter);
$order = $accountNumberList->arResult[0];
}
if ($order) {
$status = $_REQUEST['Success'] == 'true' ? GetMessage("SALE_TINKOFF_SUCCESS") : GetMessage("SALE_TINKOFF_FAIL");
$statusPageURL = GetMessage("SALE_TINKOFF_SUCCESS_TEXT_NEW_URL", Array("#URL1#" => GetPagePath('personal/orders'), "#URL2#" => $orderID));
echo GetMessage("SALE_TINKOFF_SUCCESS_TEXT_NEW", Array("#orderID#" => $orderID, "#status#" => $status, "#statusPageURL#" => $statusPageURL));
} else {
echo GetMessage("SALE_TINKOFF_FAIL_TEXT_NEW", array("#orderID#"=>$orderID) );
}
Так как мы заменили переменные языка, вам нужно будет также добавить переменные в ваш языковой файл
/bitrix/modules/tinkoff.payment/install/sale_payment/tinkoff/lang/ru/result.php
следующие переменные:
$MESS['SALE_TINKOFF_SUCCESS_TEXT_NEW'] = "Заказ с номером #orderID# оплачен #status#
Состояние заказа можно узнать на <a href="#statusPageURL#">странице заказа";
$MESS['SALE_TINKOFF_SUCCESS_TEXT_NEW_URL'] = "#URL1#/#URL2#";
$MESS['SALE_TINKOFF_FAIL_TEXT_NEW'] = "Заказ с номером #orderID# не найден";
И все, после проверки ошибка исчезнет.