Skip to content

Безопасность - FineReport Справка | Разработка отчетов | Отчеты | Учебные пособия

защита безопасности

1. Обзор

1.1 Версия

Версия сервера FineBIФункциональные изменения
6.0-
6.0.7Добавить функцию проверки ссылок Если эта функция включена, контроль посетителей будет основываться на содержимом белого списка.
6.0.11Изменение содержания сообщения об ошибке после включения оптимизации ответа на запрос
6.0.13Новый элемент конфигурации URL, позволяющий установить, разрешать ли в URL точки с запятой

1.2 Функциональный профиль

Для обеспечения безопасности платформа предоставляет некоторые переключатели функций безопасности в интерфейсе "Защита безопасности", в том числе: улучшение Cookie, настройка HSTS, проверка загрузки файлов, ограничение формулы вызова скриптов, заголовки безопасности, оптимизация ответа на запрос, улучшение аутентификации с помощью токенов.

В этой статье рассказывается о вышеперечисленных функциях безопасности, пользователи могут одним щелчком мыши включить меры защиты в соответствии со своими потребностями в интерфейсе "Безопасность" . Как показано на рисунке ниже:

2. Улучшение качества печенья

"Кнопка Cookie Enhancement по умолчанию выключена. При нажатии на нее она определяет текущий протокол:

  • Усовершенствование куки-файлов включается, когда в качестве текущего протокола сервера определяется HTTPS.
  • При обнаружении HTTP в качестве протокола текущего сервера появляется всплывающее окно с предложением "HTTP обнаружен в качестве протокола текущего сервера, и он не может быть успешно включен. Пожалуйста, убедитесь, что на сервере включен HTTPS, и повторите попытку" и не удалось включить.

Как показано на рисунке ниже:

3. Настройки HSTS

3.1 Функциональное описание

HSTS - это механизм интернет-безопасности, полное название которого - HTTP Strict Transport Security, или Secure Transport Protocol. Благодаря HSTS браузеры автоматически используют HTTPS для доступа к адресам веб-сайтов, что гарантирует пользователям постоянный доступ к зашифрованным ссылкам на веб-сайты и безопасную передачу данных.

Кнопка "Настройки HSTS" по умолчанию выключена. Эта кнопка может быть включена только после того, как сервер включит HTTPS, и когда она будет включена, доступ по HTTP будет отключен, эта настройка пока не поддерживается браузерами ниже IE11.

Если текущий протокол сервера - HTTP, после включения этой кнопки появится сообщение: Текущий протокол сервера определяется как HTTP, его невозможно успешно включить, пожалуйста, убедитесь, что на сервере включен HTTPS, и повторите попытку. Убедитесь, что на сервере включен HTTPS, и повторите попытку:

Примечание: Самоподписанные сертификаты не учитываются при настройке HSTS.

3.2 Метод настройки

Добавьте "заголовок" при включении кнопки "Настройки HSTS": Strict-Transport-Security:, значение по умолчанию - max-age=31536000; includeSubdomains

Суперадминистратор может изменить значение "header" с помощью "fine_conf_entity Visual Configuration Plugin".

Примечание: Методы изменения значений полей таблиц базы данных FineDB см. в разделе " Модификации полей общих таблиц FineDB ".

элемент конфигурациизначение конфигурацииПример конфигурациискрытый смысл
WebSecurityConfig.hstsHeadermax-age=<сроки действияmax-age=31536000Установите браузер на использование HTTPS для всех запросов к этому домену в течение 31536000 секунд после получения запроса.
max-age=<сроки действия>; includeSubDomainsmax-age=31536000; includeSubdomainsУстановите браузер на использование HTTPS для всех запросов к этому домену в течение 31536000 секунд после получения запроса.Это правило также применяется ко всем поддоменам сайта
max-age=<expire-time>; preloadmax-age=31536000; preloadУстановите браузер на использование HTTPS для всех запросов к этому домену в течение 31536000 секунд после получения запроса.Предварительно загруженные HSTS

4. проверка достоверности загрузки файлов

4.1 Функциональное описание

Уязвимость загрузки файлов - это когда злоумышленник загружает исполняемый файл сценария и получает возможность выполнять команды на стороне сервера через этот файл сценария. Чаще всего веб-сервер позволяет пользователям загружать изображения или обычные текстовые файлы, а злоумышленник обходит механизм загрузки, чтобы загрузить вредоносный код и выполнить его, получив контроль над сервером.

Кнопка "Проверка загрузки файлов" включена по умолчанию, и если она включена, то проверяет суффикс, размер и двоичный заголовок файлов заполнения, конфигурации внешнего вида платформы и локально загруженных файлов. Если проверка пройдена, загруженный файл будет успешным; если проверка не пройдена, загруженный файл будет неудачным. Ниже приведены конкретные настройки проверки:

Примечание: Если пользователь загружает файл, который не удается загрузить из-за того, что он не прошел проверку контрольной суммы, он может воспользоваться следующей схемой для успешной загрузки файла:

Вариант 1: Временно отключите кнопку "Проверка загрузки файла" и загрузите файл заново.

Вариант 2: Обратитесь к разделу 4.2, чтобы изменить правила контрольной суммы для типов файлов и освободить типы файлов, которые необходимо загрузить.

Содержание калибровкиСпециальные настройки
Размер загружаемых файловВ меню Система > Конфигурация внешнего вида запретите загрузку изображений размером более 20 М, чтобы предотвратить зависание программы.Если вы загрузите изображение, размер которого превышает установленный лимит, появится всплывающее окно: "Для лучшего отображения, пожалуйста, выберите изображение размером не менее 1024*768 и не более 20M, поддерживаются форматы PNG, JPG.
Контроль файлов позволяет установить собственный предел размера файла, при превышении которого загрузка будет невозможна.При загрузке файла, превышающего установленный лимит, появится всплывающее окно: "Файл слишком большой, лимит составляет xxx КБ".
Типы загружаемых файлов**Белый список (типы файлов, разрешенных для загрузки) включает:jpg , jpeg , gif , bmp , png , pdf , doc , docx , ppt , pptx , xls , xlsx , zipЧерные списки (типы файлов, запрещенные для загрузки) включают:**asp, jsp, php, exe
Двоичный заголовок для загружаемых файловОпределите тип файла, проверив его двоичный заголовок, и запретите загрузку файлов с суффиксами, не соответствующими реальному типу.

4.2 Методы настройки

Администратор входит в систему FineBI и нажимает "System Management > Управление безопасностью > Защита безопасности", чтобы включить "Верификацию загрузки файлов", как показано на рисунке ниже:

Суперадминистратор может изменить тип контрольной суммы при загрузке файлов с помощью плагина "fine_conf_entity Visual Configuration Plugin".

Примечание: Методы изменения значений полей таблиц базы данных FineDB см. в разделе " Модификации полей общих таблиц FineDB ".

элемент конфигурации(стоитьправила и положения
WebSecurityConfig.fileInspectorType0Прямой выпуск, когда суффикс не внесен в белый списокЕсли суффикс находится в белом списке, он должен быть сопоставлен с заголовком контрольной суммы, прежде чем он будет выпущен
1Значение по умолчанию, освобождается, только если суффикс внесен в белый список и заголовок соответствует
2Суффиксы, не включенные в черный список, освобождаются

4.3 Примеры эффектов

4.3.1 Проверка размера загруженного файла

В разделе "System Management > Конфигурация внешнего вида" при загрузке изображения размером более 20 М появляется всплывающее окно "Upload file failed, file is too large", и загрузка файла завершается неудачно. Как показано на рисунке ниже:

4.3.2 Проверка типа загружаемого файла

Перейдите в раздел "Public Data" и выберите папку с правами администратора (см.: Привилегии администратора Public Data). Нажмите "Новый набор данных > Набор данных Excel", чтобы добавить набор данных Excel.

Загрузка файлов неподдерживаемых форматов, например .zip, приведет кпоявлению всплывающего окна "Тип файла не поддерживается", и загрузка файла завершится неудачей. Как показано на рисунке ниже:

4.3.3 Проверка двоичных заголовков для загружаемых файлов

Перейдите в раздел "Public Data" и выберите папку с правами администратора (см.: Привилегии администратора Public Data). Нажмите "Новый набор данных > Набор данных Excel", чтобы добавить набор данных Excel.

Для файлов не типа xlsx измените расширение на .xlsx и загрузите их.

При проверке двоичного заголовка система определяет, что фактический тип не xlsx и не соответствует суффиксу .xlsx, тогда появляется всплывающее окно "Upload Failed, File Suffix Does Not Match the Actual Type", и загрузка файла завершается неудачей. Как показано на рисунке ниже:

5. Ограничения формулы вызова сценария

5.1 Функциональное описание

Два интерфейса FR.remoteEvaluate и FR.remoteEvaluateAsync чаще всего используются в JS, но эти два интерфейса также имеют огромный риск безопасности, который может привести к тому, что злоумышленник сможет выполнить такие операции, как добавление, удаление, модификация и проверка базы данных, что эквивалентно уровню риска удаленного выполнения.

Поэтому FineBI добавила новую функцию "Script Call Formula Restriction", которая запрещает скриптам вызывать рискованные формулы, если она включена.

Примечание: Если у пользователя нет соответствующего сценария использования, не рекомендуется просто отключать функцию, поскольку ее отключение чревато возникновением уязвимости, о которой говорилось выше.

5.2 Метод настройки

Администратор входит в систему FineBI и нажимает "System Management > Управление безопасностью > Защита безопасности", чтобы включить "Ограничение формулы вызова по сценарию", как показано на следующем рисунке:

6. заголовки безопасности

Настройка серии заголовков безопасности, при включении которой к заголовку запроса будет добавлен атрибут HTTP Security Headers, блокирующий атаки на уязвимости.

Щелкните Advanced Settings (Дополнительные параметры), чтобы развернуть подфункцию Advanced Protection (Дополнительная защита) до пяти переключателей, как показано ниже:

Примечание: Если функция Security Headers включена, все подфункции включены по умолчанию, а если Security Headers выключена, все подфункции выключены по умолчанию, а функция Advanced Protection не может быть включена.

Ниже приведены конкретные настройки, включенные по умолчанию:

  
res.addHeader("X-Content-Type-Options", "nosniff"); res.addHeader("X-XSS-Protection", &quot  
  
;1; mode=block"); res.addHeader("X-Frame-Options", "SAMEORIGIN"); res.addHeader("Content-  
Security-Policy", "object-src 'self'"); res.addHeader("Cache-Control", "no-  
  
cache"); res.addHeader("Pragma", "no-cache"); res.addDateHeader("Expires", 0)

6.1 Политика безопасности содержимого CSP

6.1.1 Функциональное описание

CSP Content Security Policy, подобно белым спискам, указывает браузеру или клиенту, что разрешено выполнять, а что запрещено, настраивая белый список в CSP.

Сайт отправляет браузеру CSP-заголовок, чтобы сообщить ему вышеуказанную информацию, так что даже если злоумышленник обнаружит уязвимость сайта, у него не будет возможности написать сценарий атаки, потому что сценарий атаки отсутствует в белом списке.

После включения функции "Политика безопасности содержимого CSP" в заголовок запроса по умолчанию будет добавлен параметр Content-Security-Policy:object-src 'self', ограничивающий загрузку всех внешних ресурсов только из текущего домена.

6.1.2 Метод настройки

Администратор входит в систему FineBI, нажимает "System Management > Управление безопасностью > Защита безопасности", чтобы включить функцию "Заголовки безопасности". Нажмите "Дополнительные настройки", чтобы включить "Политику безопасности содержимого CSP ". Как показано на следующем рисунке:

Суперадминистратор может изменять политику с помощью плагина "fine_conf_entity Visual Configuration Plugin".

Примечание: Методы изменения значений полей таблиц базы данных FineDB см. в разделе " Модификации полей общих таблиц FineDB ".

элемент конфигурациизначение конфигурацииПример конфигурациисловарьскрытый смысл
WebSecurityConfig.contentSecurityPolicyHeaderobject-srcobject-src 'self'Content-Security-Policy: <policy-directive>; <policy-directive>Примечание: Разделите несколько совпадений точкой с запятой. 1) none означает, что совпадение не выполняется. 2) self означает совпадение с текущим источником (не его поддоменом). 3) unsafe-inline означает, что разрешены встроенные JavaScript и CSS. 4)unsafe-eval означает, что разрешен механизм преобразования текста в JavaScript, например eval.Ограничение адреса источника тегов <object>, <embed> и <applet>и разрешает совпадения только с текущим источником (не с его поддоменами)
object-srcobject-src uriОграничьте исходный адрес тегов <object>, <embed>, <applet> а адрес в вышеуказанных тегах - только https://example.com/允许加载.
default-srcdefault-src https.Запретите небезопасное inline/динамическое выполнение, разрешите загрузку этих ресурсов (изображений, шрифтов, скриптов и т. д.) только через https.

6.2 Защита от XSS-атак

6.2.1 Функциональное описание

XSS - это собирательный термин для обозначения класса атакующих программ, которые пишутся злоумышленниками, нашедшими уязвимости в веб-сайтах. Как правило, это JS, но могут быть и Java, flash, html и т. д.В результате успешных атак могут быть получены: повышенные привилегии, приватные сессии, cookies и т. д.

При включении функции "Защита от XSS-атак" в заголовок запроса по умолчанию добавляется параметр X-XSS-Protection:1; mode=block для включения XSS-фильтра, чтобы браузер прекращал загрузку страницы при обнаружении межсайтовой скриптинговой атаки (XSS (en-US)).

Примечание: Заголовок ответа X-XSS-Protection - это функция Internet Explorer, Chrome и Safari.

6.2.2 Метод настройки

Администратор входит в систему FineBI, нажимает "System Management > Управление безопасностью > Защита безопасности", чтобы включить функцию "Заголовки безопасности". Нажмите "Дополнительные настройки", чтобы включить функцию "Защита от XSS-атак". Как показано на рисунке ниже:

Суперадминистратор может изменять политику с помощью плагина "fine_conf_entity Visual Configuration Plugin".

Примечание: Методы изменения значений полей таблиц базы данных FineDB см. в разделе " Модификации полей общих таблиц FineDB ".

элемент конфигурациизначение конфигурациисловарьскрытый смысл
WebSecurityConfig.xssProtectionHeader0X-XSS-Protection: 0Отключите фильтрацию XSS
1X-XSS-Protection: 1Включите фильтрацию XSS Если обнаружена атака межсайтового скриптинга, браузер очистит страницу, удалив небезопасные части
1; mode=blockX-XSS-Protection: 1; mode=blockВключите фильтрацию XSS Если атака обнаружена, вместо того чтобы очистить страницу, браузер предотвратит ее загрузку
1; report=<reporting-uri>Пример: 1; report=xss.phpX-XSS-Protection: 1; report=xss.phpВключите фильтрацию XSSЕсли обнаружена атака межсайтового скриптинга, браузер очищает страницу и отправляет отчет о нарушении с помощью функции CSP xss.php

6.3 Защита от атак типа Clickjacking

6.3.1 Функциональное описание

ClickJacking - это визуальный обман, побуждающий пользователя взаимодействовать со скрытой страницей и выполнить опасное действие.

Атака осуществляется следующим образом:

  • Злоумышленник использует прозрачный iframe, который накладывается на веб-страницу, а затем обманом заставляет пользователя выполнить действие на этой странице, после чего пользователь неосознанно переходит на страницу с прозрачным iframe.
  • Злоумышленник использует изображение для наложения на веб-страницу, скрывая смысл исходного местоположения страницы.

При включении кнопки "Защита от атак Clickjacking" в заголовок запроса по умолчанию добавляется параметр X-Frame-Options:SAMEORIGIN, что предотвращает встраивание страниц сайта в другие страницы.

Этот заголовок ответа используется для указания браузеру, разрешено ли отображать страницу в <фрейме>, <iframe>, <embed> или <object>. Сайты могут использовать эту функцию, чтобы убедиться, что сайт не встроен в чужой сайт, что позволяет избежать атак типа clickjacking.

6.3.2 Методы настройки

Администратор входит в систему FineBI, нажимает "System Management > Управление безопасностью > Защита безопасности", чтобы включить функцию "Заголовки безопасности". Нажмите "Дополнительные настройки", чтобы включить функцию "Защита от атак Clickjacking". Как показано на рисунке ниже:

Суперадминистратор может изменять политику с помощью плагина "fine_conf_entity Visual Configuration Plugin".

Примечание: Методы изменения значений полей таблиц базы данных FineDB см. в разделе " Модификации полей общих таблиц FineDB ".

элемент конфигурациизначение конфигурациисловарьскрытый смысл
WebSecurityConfig.frameOptionsHeaderзапретитьX-Frame-Options: denyБраузер откажется загружать любую фреймовую страницу на текущей странице
sameoriginX-Frame-Options: sameoriginУказывает, что страница может быть отображена во фрейме на той же странице домена.
allow-from uriПример: allow-from https://example.com/X-Frame-Options: allow-from https://example.com/Указывает, что страница может быть отображена во фрейме из указанного источника (https://example.com/).

6.3.3 Примечания

Если включена функция "Защита от атак Clickjacking", страница по умолчанию может быть загружена только в том же домене.

Если вы вставляете отчет с помощью междоменного iframe, вы не сможете получить к нему доступ. Отключите кнопку "Защита от атак Clickjacking" в расширенных настройках заголовков безопасности. Как показано на рисунке ниже:

6.4 Защита от атак типа Content Sniffing

6.4.1 Функциональное описание

MIME - это стандартное многоцелевое расширение интернет-почты. Оно указывает на характер и формат документа, файла или различных байтов.

Как правило, браузеры используют поле Content-Type в заголовке ответа для определения типа ресурса. Когда Content-Type некоторых ресурсов неверен или не определен, некоторые браузеры включают MIME-sniffing, чтобы определить тип ресурса, разобрать содержимое и выполнить его.

Когда включена функция "Защита от атак с подслушиванием содержимого", в заголовок запроса по умолчанию добавляется параметр X-Content-Type-Options:nosniff, чтобы отключить угадывание типа браузера в целях безопасности.

6.4.2 Методы настройки

Администратор входит в систему FineBI, нажмите "System Management > Управление безопасностью > Защита безопасности", чтобы включить функцию "Заголовки безопасности". Нажмите "Расширенные настройки", чтобы включить "Защиту от атак контентного сниффинга", как показано на рисунке ниже:

Суперадминистратор может изменять политику с помощью плагина "fine_conf_entity Visual Configuration Plugin".

Примечание: Методы изменения значений полей таблиц базы данных FineDB см. в разделе " Модификации полей общих таблиц FineDB ".

элемент конфигурациизначение конфигурациисловарьскрытый смысл
WebSecurityConfig.contentTypeOptionsHeadernosniffX-Content-Type-Options: nosniffЗапросы будут блокироваться в следующих двух случаях: (1) Тип запроса - "style", но MIME-тип не "text/css". 2) Тип запроса - "script", но MIME-тип не является MIME-типом JavaScript.

6.4.3 Примечания

Если включена функция "Защита от атак с подслушиванием содержимого", междоменный обмен ресурсами с несоответствующими типами MIME будет блокироваться.

Если единый вход пользователя не удается, откройте консоль по F12 в интерфейсе браузера, и появляются ошибки, связанные с кросс-доменом, отключите кнопку "Защита от атак на сниффер" в расширенных настройках заголовков безопасности. Пожалуйста, отключите кнопку "Защита от атак с использованием контента" в расширенных настройках заголовков безопасности:

6.5 Отключение кэша браузера

6.5.1 Функциональное описание

Отключение кэша браузера содержит три идентификатора:

  • Общее поле заголовка сообщения Cache-Control используется для реализации механизма кэширования в http-запросах и ответах путем указания директив. Директивы кэширования являются однонаправленными, то есть директивы, заданные в запросе, не обязательно будут включены в ответ.
  • Expires Заголовок ответа содержит дату/время, после которого истекает срок действия ответа. Недопустимая дата, например 0, означает дату в прошлом, т. е. срок действия ресурса истек. Заголовок Expires игнорируется, если в заголовке ответа Cache-Control установлена директива "max-age" или "s-max-age".
  • Pragma - это общая инициализация, указанная в HTTP/1.0, действие которой зависит от различных реализаций, поэтому она может иметь различные эффекты в цепочке "запрос-ответ". Она используется для обратной совместимости с серверами кэширования, которые поддерживают только протокол HTTP/1.0, до того, как в протоколе HTTP/1.1 появился Cache-Control.

Когда включена опция "Browser Cache Disable", в заголовок запроса по умолчанию добавляются параметры Cache-Control:no-cache, Pragma:no-cache и Expires:0.

6.5.2 Методы настройки

Администратор входит в систему FineBI, нажимает "System Management > Управление безопасностью > Защита безопасности", чтобы включить функцию "Заголовки безопасности". Нажмите "Дополнительные настройки", чтобы включить функцию "Отключение кэша браузера". Как показано на рисунке ниже:

Супер-администраторы могут изменять конкретные политики с помощью "fine_conf_entity Visual Configuration Plugin".

Примечание: Методы изменения значений полей таблиц базы данных FineDB см. в разделе " Модификации полей общих таблиц FineDB ".

элемент конфигурациизначение конфигурацииПример конфигурациисловарьскрытый смысл
WebSecurityConfig.cacheControlHeaderПримечание: Кэширование браузера отключает значение Header Cache-Control.no-cacheno-cacheCache-control: no-cacheЗаставьте кэш отправить запрос на оригинальный сервер для проверки перед публикацией кэшированной копии (согласованная проверка кэша).
max-age=<seconds>max-age=3600Кэш-контроль: max-age=3600Устанавливает максимальный период хранения кэша, по истечении которого кэш считается просроченным (в секундах).
WebSecurityConfig.cacheControlExpiresHeaderПримечание: Кэширование браузера отключает значение параметра Header Expires.00Expires: <http-date>представляет собой прошедшую дату, т.е. срок действия ресурса истек
<http-дата>Wed, 21 Oct 2015 07:28:00 GMTОтвет истек после даты Wed, 21 Oct 2015 07:28:00 GMT
WebSecurityConfig.cacheControlPragmaHeaderПримечание: Кэширование браузера отключает значение Header Pragma.no-cacheno-cachePragma: no-cacheТо же действие, что и Cache-Control: no-cache Заставляет кэширующий сервер отправлять запрос на оригинальный сервер для проверки, прежде чем вернуть кэшированную версию.

7. оптимизация ответа на запрос

7.1 Функциональное описание

Кнопка "Оптимизация ответа на запрос" включена по умолчанию для проектов в версии 6.0.11 и более поздних.

При выключенной кнопке Request Response Optimisation отображается подробная информация о стеках. Пользователи могут включить кнопку Request Response Optimisation, если считают, что отображение подробной информации о стеках представляет угрозу безопасности.

Кнопка Request Response Optimisation, если она включена, предоставляет информацию о критических ошибках имаскирует специфический стек сообщений об ошибках.

7.2 Метод настройки

Администратор входит в систему FineBI и нажимает "System Management > Управление безопасностью > Защита безопасности", чтобы включить "Оптимизацию ответа на запрос", как показано на следующем рисунке:

7.3 Примеры эффектов

Пример: добавление набора данных SQL в систему FineBI, при использовании несуществующего набора данных "Пользователи", предварительный просмотр не работает, нажмите "Детали", чтобы увидеть причину сбоя предварительного просмотра.

(1) Если оптимизация ответа на запрос не включена, нажмите "Подробности", чтобы просмотреть стек отчетов о конкретных ошибках, как показано на следующем рисунке:

2) После открытия, нажав "Подробная информация", можно увидеть только ключевое сообщение об ошибке, а причина ошибки такова: 11300001 Data Set Configuration Misconfiguration.

[SQLITE_ERROR] Ошибка SQL или отсутствие базы данных (нет такой таблицы: user)

Примечание 1: Если пользователи хотят видеть подробный стек ошибок, отключите кнопку "Оптимизация ответа на запрос".

Примечание 2: Для проектов до версии 6.0.11 после включения функции "Оптимизация ответа на запрос" все сообщения стека будут преобразованы в простое сообщение об ошибке: "Ошибка запроса, если вам нужно увидеть подробное сообщение об ошибке, перейдите на страницу управления безопасностью, чтобы установить его".

8. усовершенствования аутентификации с помощью токенов

8.1 Функциональное описание

1) Токен - это уникальный идентификатор пользователя. Логика аутентификации на основе Token выглядит следующим образом:

  • При первом входе в систему клиент запрашивает имя пользователя и пароль.
  • Когда сервер получает запрос на вход, он запрашивает и проверяет пароль, соответствующий имени пользователя.
  • После успешной аутентификации сервер генерирует токен (token: уникальный идентификатор), привязанный к пользователю, на основе информации о нем и отправляет его клиенту.
  • Клиент получает токен и хранит его локально, и каждый раз, когда он запрашивает ресурсы у сервера, ему нужно принести токен, выданный сервером.
  • Сервер получает запрос, проверяет токен, указанный в запросе клиента, возвращает клиенту запрошенные данные, если проверка прошла успешно, и возвращает сообщение об ошибке, если проверка не прошла, требуя от клиента повторного входа в систему.

2) Риски безопасности токена

После выпуска токена он остается действительным в течение всего срока его действия, и сервер не может заставить токен истечь.

Похитив токен, злоумышленник может отправить запрос, чтобы выдать себя за пользователя на другой машине, что представляет собой угрозу безопасности.

3) Проверьте IP-адрес, соответствующий токену, чтобы предотвратить перехват и кражу токена злоумышленниками.

Кнопка "Token Authentication Enhancement" по умолчанию отключена.

IP-адрес первого запроса на вход в систему хранится на государственном сервере, соответствующем токену.

Если включен параметр "Усиление аутентификации токена", сервер проверяет токен и IP-адрес, соответствующий токену, при получении запроса:

  • Если IP-адрес текущего запроса совпадает с IP-адресом токена, он автоматически освобождается.
  • Если текущий IP-адрес запроса не совпадает с IP-адресом Токена, это будет считаться неправомерным запросом и автоматически приведет к переходу на страницу входа в систему, что потребует от вас повторного входа в систему.

8.2 Метод настройки

Администратор входит в систему FineBI и нажимает "System Management > Управление безопасностью > Защита безопасности", чтобы включить "Улучшение аутентификации с помощью токенов", как показано на следующем рисунке:

8.3 Примеры эффектов

После включения функции "Token Authentication Enhancement", если IP-адрес запроса будет изменен, появится всплывающее окно с сообщением "Login information is invalid, please login again".

После нажатия кнопки "OK" вы будете перенаправлены на страницу входа в систему и снова войдете в систему. Как показано на рисунке ниже:

9. Проверка рефереров

Примечание: По умолчанию эта функция не включена.

9.1 Функциональное описание

Поле Referer в заголовке HTTP-запроса содержит информацию об источнике HTTP-запроса, то есть о веб-странице, с которой пользователь перешел на текущую страницу.

На основе поля Referer настройте правила контроля доступа (например, белый список) на стороне сервера, чтобы ограничить доступ пользователей к ресурсам сервера только при переходе с определенной веб-страницы, чтобы предотвратить незаконное хищение ресурсов сервера.

Если в FineReport включена проверка ссылок и настроен белый список, посетители идентифицируются и фильтруются на основе белого списка, предотвращая прямой доступ к панелям мониторинга в вашем проекте или ссылки на другие веб-сайты.

9.2 Метод настройки

Супер-администратор может изменить конкретную политику проверки реферера с помощью следующих элементов конфигурации.

Примечание: Таблица fine_conf_entity проекта не существует в конфигурации Referer checksum по умолчанию, вам необходимо вручную добавить поле и после перезапуска проекта, чтобы оно вступило в силу, добавить метод, пожалуйста, обратитесь к: заполните модифицированную fine_conf_entity.

элемент конфигурациизначение конфигурацииЗначение/правила
WebSecurityConfig.refererVerifyEnabledправдаВключить проверку реферера
ложьОтключить контрольную сумму реферера (по умолчанию)
WebSecurityConfig.refererWhiteListФормат: ["item1", "item2"].Пример: ["http://localhost:37799", "localhost:37799", "localhost"].Значением поля является содержимое настраиваемого белого списка, а список рефералов разделяется запятыми.Только домены из белого списка могут получить доступ к текущему ресурсу, домены вне белого списка не могут получить доступ к текущему ресурсу.
WebSecurityConfig.refererAllowEmptyправдаЕсли поле Referer в запросе пустое или отсутствует, пользователю разрешен доступ к текущему ресурсу.Примечание: Значение этого поля фиксировано и даже если его изменить на false, оно будет действовать в соответствии с логикой true.

9.3 Примеры эффектов

Нажмите, чтобы загрузить шаблон: finedb field modification.cpt

Обратитесь кзаполнению элемента конфигурации, который изменяет fine_conf_entity для изменения контрольной суммы Referer.

Примечание: Рекомендуется настроить белый список при включении проверки реферера в соответствии с разделом 9.3.2, иначе это приведет к невозможности входа в систему FineBI и изменению политики проверки, эффект будет таким, как показано в разделе 9.3.1.

9.3.1 Включение контрольных сумм реферера

1) Добавьте новое поле "WebSecurityConfig.refererVerifyEnabled" в таблицу fine_conf_entity проекта и установите значение поля в true.

Нажмите "Submit" и перезапустите проект, чтобы конфигурация вступила в силу и включила проверку реферера. Как показано на следующем рисунке :

2) Введите адрес проекта http://ip:端口/webroot/decision в браузере, чтобы получить доступ к системе FineBI , но доступ не удается, как показано ниже:

3) Откройте консоль Chrome, нажав F12 или щелкнув правой кнопкой мыши на Inspect, и переключитесь на Network, чтобы увидеть код состояния запроса и поле Referer.

Если просмотреть запрос с полем Referer, то запрос является аномальным и возвращает код состояния 403, поскольку белый список не настроен, а белый список пуст и не позволяет всем доменам получить доступ к текущему ресурсу. Как показано на следующем рисунке:

Для просмотра запроса без поля Referer, поскольку значение поля элемента конфигурации "WebSecurityConfig.refererAllowEmpty" установлено наture, что позволяет запросу с нулевым полем Referer или без поля Referer получить доступ к текущему ресурсу, запрос проходит успешно, и возвращается код состояния 200, как показано на следующем рисунке:

9.3.2 Включение контрольных сумм реферера и настройка белых списков

Пример: включите проверку реферера и установите белый список на ["localhost"].

1) Добавьте следующие новые поля в таблицу fine_conf_entity проекта:

Добавьте поле "WebSecurityConfig.refererVerifyEnabled", установите значение поля в true, чтобы включить проверку реферера.

Добавьте поле "WebSecurityConfig.refererWhiteList", установите значение поля в ["localhost"], чтобы разрешить доступ к ресурсу запросам из домена localhost.

Нажмите "Submit", и элементы конфигурации вступят в силу после перезапуска проекта. Как показано на рисунке ниже :

2) Введите адрес проекта http://ip:端口/webroot/decision в браузере для доступа к системе FineBI , доступ будет успешным, как показано на рисунке ниже:

3) Откройте консоль Chrome, нажав F12 или щелкнув правой кнопкой мыши на Inspect, и переключитесь на "Сеть", чтобы увидеть запросы с полем Referer.

Например, Referer: http://localhost:37799/webroot/decision, с доменом localhost, находится в белом списке и ему разрешен доступ к текущему ресурсу. Как показано на рисунке ниже:

9.4 Примечания

Если вы настроили единый вход в CAS, вам нужно внести в белый список как URL-адрес проекта, так и URL-адрес CAS, иначе вход будет неудачным.

Если пользователь настроил кросс-доменный единый вход, необходимо внести в белый список URL-адреса обоих кросс-доменных проектов, иначе вход будет неудачным.

Как показано на рисунке ниже:

10. Механизм фильтрации URL с точкой с запятой

10.1 Функциональное описание

Когда Tomcat разбирает URL-адрес пользовательского запроса, если он содержит точку с запятой, Tomcat отфильтровывает содержимое строки между точкой с запятой и слэшем (включая точку с запятой) и нормализует его.

Злоумышленники могут использовать точки с запятой, чтобы обойти механизм проверки привилегий и получить доступ к конфиденциальным ресурсам или выполнить вредоносные операции, поставив под угрозу безопасность системы.

В версии 6.0.13 и выше FineBI добавляет новый элемент конфигурации URL, который отключает использование точек с запятой в URL для предотвращения атак обхода пути, обхода привилегий и таких проблем безопасности, как обфускация и подмена URL.

10.2 Метод настройки

Супер администратор может установить, разрешать ли точки с запятой в URL-адресах, с помощью следующего элемента конфигурации.

Примечание: Следующие элементы конфигурации не существуют в таблице fine_conf_entity проекта по умолчанию, вам необходимо вручную добавить поля и ввести их в действие после перезапуска проекта, пожалуйста, обратитесь к методу добавления: Заполните модификацию fine_conf_entity.

элемент конфигурациизначение конфигурацииЗначение/правила
WebSecurityConfig.allowURLSemicolonистина/значение параметра не задано (по умолчанию)Разрешить точки с запятой в URL-адресах
ложьНе допускайте точек с запятой в URL-адресах

10.3 Примеры эффектов

10.3.1 Разрешение точек с запятой в URL-адресах

FineReport позволяет использовать точку с запятой в качестве разделителя в URL-адресах, если параметр "WebSecurityConfig.allowURLSemicolon" не настроен или если значение параметра равно true.

Например, если браузер обращается к URL http://localhost:37799/webroot/decision/;12345/login с точкой с запятой, Tomcat отфильтровывает содержимое строки между точкой с запятой ;xxx/ и слэшем (включая точку с запятой) и нормализует его.

Фактический эффект доступа - http://localhost:37799/webroot/decision/login, и вы можете получить нормальный доступ к проекту, как показано на следующем рисунке:

10.3.2 Значение параметра false

1) Ссылка Внесение изменений в fine_conf_entity Добавьте новое поле "WebSecurityConfig.allowURLSemicolon" в таблицу fine_conf_entity проекта и установите значение параметра в "false". Установите значение параметра в "false", как показано на следующем рисунке:

Элемент конфигурации вступает в силу после перезапуска проекта. Использование точек с запятой в URL-адресах не допускается.

2) Браузер обращается к URL с точкой с запятой: http://localhost:37799/webroot/decision/; 12345/login, запрос неверен, и доступ к проекту невозможен, как показано на следующем рисунке: