Wrong csrf token битрикс 24 что это

Типичные ошибки при защите сайтов от CSRF-атак

Wrong csrf token битрикс 24 что это. ffc91901d4024e0091cfeeedb61783b0. Wrong csrf token битрикс 24 что это фото. Wrong csrf token битрикс 24 что это-ffc91901d4024e0091cfeeedb61783b0. картинка Wrong csrf token битрикс 24 что это. картинка ffc91901d4024e0091cfeeedb61783b0

В настоящее время в сфере обеспечения безопасности веб-сайтов и приложений возникла очень интересная ситуация: с одной стороны, некоторые разработчики уделяют особое внимание безопасности, с другой, они напрочь забывают о некоторых видах атак и не считают ошибки, позволяющие выполнить данные атаки, уязвимостями. Например, к такой категории можно отнести CSRF (Сross Site Request Forgery). Эта атака позволяет производить различные действия на уязвимом сайте от имени авторизованного пользователя. Если вы не слышали о таком, то я рекомендую прочитать соответствующую статью в Википедии, чтобы иметь общее представление об этом виде атак. Основная часть статьи предназначена тем, кто обеспокоен правильной защитой своих сайтов от CSRF.

Замечание 1: если подходить формально, то CSRF является атакой, а не уязвимостью, как и XSS. Уязвимостью является неправильная обработка входных данных, а CSRF это использует.
Замечание 2: если какие-то ошибки показались вам очевидными и не заслуживающими упоминания, то я рад за вас. Однако данный материал основан на реальных уязвимостях крупных сайтов, а каждый пункт показывает ошибку какой-либо команды разработчиков, обернувшуюся дырой в безопасности.

Список ошибок:

1) Полностью отсутствует защита от CSRF.

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

2) Защищены не все запросы.

Я бы поставил эту ошибку на второе место по распространенности. На многих сайтах, где реализована какая-либо защита от CSRF, можно найти уязвимые запросы. Например, если вы воспользуетесь поиском Хабра habrahabr.ru/search/?q=CSRF, то увидите значительное количество статей, повествующих о найденных уязвимостях на тех сервисах, где есть защита.
Вы должны защищать абсолютно все запросы, которые изменяют что-либо на сайте. Вы добавили токен в форму смены адреса электронной почты, и злоумышленник не сможет завладеть аккаунтом вашего пользователя, изменив от его имени почту, а затем и пароль? Здорово. Вот только такая мера бесполезна, если можно просто отправить запрос на перевод денег с аккаунта жертвы на кошелек атакующего, минуя вашу защиту.
Удобство обеспечения безопасности — одна из причин использовать только метод POST для запросов, изменяющих данные пользователя. Если вы следуете этому совету, то необходимо просто убедиться, что все POST-запросы содержат надежный и правильный токен. Об этом речь пойдет ниже.

3) Использование для защиты от CSRF чего-либо, кроме токенов.

Как насчет использования капчи? Я слышал достаточно большое количество вопросов от разработчиков о возможности их использования для защиты от атаки. Мой однозначный ответ — нет. Во-первых, вы явно не будете заставлять пользователя вводить капчу на каждый чих: это приведет к ошибке № 2. Во-вторых, далеко не все способы реализации капч обеспечат вас должной защитой, которую злоумышленник не сможет обойти. Поскольку эта тема является весьма спорной и актуальной, в дальнейшем я посвящу ей отдельную статью.

Для защиты от CSRF вы должны использовать анти-CSRF токены и только их. Лишь они обеспечивают должную защиту ваших сайтов. В общих чертах о механизме токенов рассказано в Википедии:

Другим распространённым способом защиты является механизм, при котором с каждой сессией пользователя ассоциируется дополнительный секретный ключ, предназначенный для выполнения запросов. Пользователь посылает этот ключ среди параметров каждого запроса, и перед выполнением каких-либо действий сервер проверяет этот ключ. Преимуществом данного механизма, по сравнению с проверкой Referer, является гарантированная защита от атак данного типа. Недостатками же являются: требования возможности организации пользовательских сессий и динамической генерации HTML-кода активных страниц сайта.

4) Отсутствие проверки анти-CSRF токена при обработке запроса.

Подобную ошибку я встречал на сайтах весьма серьезных компаний, чья безопасность должна быть на высоте.
В самом запросе токен есть, а при его обработке он не проверяется. Можно вставить в это поле любую строку, запрос все равно будет корректно обработан. Комментировать тут особенно нечего, надо только указать, что применение функции isset() php.net/manual/ru/function.isset.php для проверки токена совершенно недопустимо.

5) Частичная проверка анти-CSRF токена.

Данную ошибку я встретил сразу на нескольких крупных сайтах рунета в разных вариациях. Например, один из сайтов использовал токены вида «Имя_пользователя.Текущее_время.Длинное_случайное_число». При этом проверялось только соответствие имени пользователя в токене и логина того, от чьего имени был отправлен запрос. Это немного усложняет атаку, но не делает ее невозможной.

6) Возможность использовать один токен для разных пользователей.

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

7) Недостаточная длина токена.

Ваш токен должен быть настолько длинным, чтобы злоумышленник потратил на его подбор как минимум столько же времени, сколько и на подбор пароля пользователя. Я встречал токены из 2 символов, они не сильно помогут, если кто-то очень сильно захочет осуществить CSRF-атаку.

8) Предсказумые токены.

При разработке алгоритма генерации токена обязательно используйте случайные данные в токене (совет актуален, если вы разрабатываете всю систему с нуля. В случае использования фреймворка или CMS вы должны полагаться на их разработчиков). Поверьте, токен вида «md5(user_id)» — очень плохая идея.

9) Отсутствие токенов в админ-панели или системе для сотрудников техподдержки.

Даже если весь доступный вашим пользователям сайт защищен от CSRF, то не стоит забывать про панель администратора. В одной известной в узких кругах биллинг-системе было много CSRF именно в панели администратора (хотя они были и в публичной части системы, но это не так важно). И любой, кто знал структуру запросов, мог использовать CSRF-атаку на сотрудника техподдержки и получить доступ к данным всех клиентов компании, использующей данную биллинг-систему. Единственная проблема — необходимо узнать структуру запросов: для этого можно использовать социальную инженерию, скачать копию в открытых источниках или просто взломать менее защищенный сайт, использующий такую же систему.

10) Передача токенов в открытом виде, особенно в GET-запросах.

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

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

Источник

Как правильно получить токен в Битрикс24?

Добрый день!
Нашел следующий код для получения токена от Битрикс24

Но при таком подключении создается пустой лид. Если закомментировать строку

Тогда code не приходит.

Может кто сталкивался с подобной проблемой, как ее можно решить?

Простой 1 комментарий

Wrong csrf token битрикс 24 что это. 5f61fceb4e32a403906793. Wrong csrf token битрикс 24 что это фото. Wrong csrf token битрикс 24 что это-5f61fceb4e32a403906793. картинка Wrong csrf token битрикс 24 что это. картинка 5f61fceb4e32a403906793

Wrong csrf token битрикс 24 что это. 5cd537997f34e718746956. Wrong csrf token битрикс 24 что это фото. Wrong csrf token битрикс 24 что это-5cd537997f34e718746956. картинка Wrong csrf token битрикс 24 что это. картинка 5cd537997f34e718746956

Посмотрите документацию по REST Битрикс24 и как получать/продлять токены –
https://dev.1c-bitrix.ru/learning/course/index.php.

Wrong csrf token битрикс 24 что это. 5cd537997f34e718746956. Wrong csrf token битрикс 24 что это фото. Wrong csrf token битрикс 24 что это-5cd537997f34e718746956. картинка Wrong csrf token битрикс 24 что это. картинка 5cd537997f34e718746956

1. Создаете приложение
2.

Вас редиректнет на сайт, указанный в настройках приложения с параметром Code

4. Получаете access_token и refresh_token

5. Когда access_token истечет, делаете запрос

Далее шаги 4-5 до бесконечности

Также посмотрите в сторону вебхуков, возможно токен и не понадобится 🙂

«Вас редиректнет на сайт»

ЕЩЕ раз, вас редиректит ТОЛЬКО если вы АВТОРИЗОВАЛИСЬ в портале.
Если не авторизовались (а PHP НЕ АВТОРИЗОВАН в портале) то и редиректа не будет, будет форма авторизации.

Автор спрашивает как авторизоватся в портале в Битрикс. И ничего более:

Источник

Provided security token is invalid!

У меня на странице есть форма с неколькими полями и кнопкой. При нажатии на кнопку данные должны отправляться на сервер и там обрабатываться. Использую стандартные asp контролы: asp:TextBox и asp:Button. В серверной части обрабатываю событие OnClick у кнопки.
Если страница не кеширована, то все нормально. Если же нет, то возникает ошибка Provided security token is invalid!

Provided security token is invalid!
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: Bitrix.Security.BXCsrfTokenValidationException: Provided security token is invalid!

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

[BXCsrfTokenValidationException: Provided security token is invalid!]
Bitrix.Security.BXCsrfToken.ValidateToken(String token) +92
Bitrix.Security.BXCsrfToken.ValidatePost() +227
Bitrix.UI.TemplateRequisite.PageInitComplete(Object sender, EventArgs e) +53
System.EventHandler.Invoke(Object sender, EventArgs e) +0
System.Web.UI.Page.OnInitComplete(EventArgs e) +11032014
Bitrix.UI.BXPublicPage.OnInitComplete(EventArgs e) +16
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1674

Кто знает как побороть это на кешированных страницах?
Кеширование настроено так:

Источник

Неверный токен CSRF. Попробуйте повторно отправить форму

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

Символ CSRF недействителен. Повторите отправку формы

ОТВЕТЫ

Ответ 1

Вам нужно добавить _token в вашу форму i.e

Или просто добавьте << form_rest(form) >> перед закрывающим тегом формы.

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

Ответ 2

Также вы можете увидеть это сообщение об ошибке, если в вашей форме много элементов.

Эта опция в php.ini вызывает проблему

Проблема в том, что поле _token пропускает запрос PUT (GET), поэтому вам нужно увеличить значение.

Также это касается больших файлов. Увеличение

Ответ 3

Это происходит потому, что формы по умолчанию содержат защиту CSRF, которая в некоторых случаях не нужна.

Вы можете отключить эту защиту CSRF в своем классе формы в методе getDefaultOptions следующим образом:

Если вы не хотите отключать защиту CSRF, вам необходимо отобразить поле защиты CSRF в вашей форме. Это можно сделать, используя << form_rest(form) >> в вашем файле вида, например:

<< form_rest(form) >> отображает все поля, которые вы не ввели вручную.

Ответ 4

Перед тегом поставьте:

Он автоматически вставляет другие важные (скрытые) входы.

Ответ 5

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

В недавнем случае мой коллега изменил «session_prefix» на значение, в котором было пробел.

Это сломало хранилище сеансов, что, в свою очередь, означало, что моя форма не могла получить токен CSRF из сеанса.

Ответ 6

У меня была эта проблема со странным поведением: очистка кеша браузера не исправила его, но очистка файлов cookie (то есть файлов cookie сеанса PHP) решила проблему.

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

Ответ 7

У меня была эта ошибка в последнее время. Оказывается, мои настройки cookie были неправильными в config.yml. Добавление настроек cookie_path и cookie_domain в framework.session исправлено.

Ответ 8

Недавно я столкнулся с той же проблемой, и мой случай был чем-то, о чем здесь еще не говорилось:

Возможно, что-то не так с сеансом при использовании Apache и localhost в качестве домена. Если кто-то может уточнить комментарии, я был бы рад отредактировать этот ответ, чтобы включить больше деталей.

Ответ 9

Если вы не хотите использовать form_row или form_rest и хотите получить доступ к значению _token в шаблоне ветки. Используйте следующее:

Ответ 10

В моем случае у меня возникла проблема с аннотацией maxSize в сущности, поэтому я увеличил ее с 2048 по 2004 год.

надеюсь, что этот ответ поможет!

Ответ 11

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

Ответ 12

Я столкнулся с подобной проблемой. Убедившись, что поле токена действительно отображено (см. Принятый ответ), я проверил свои куки. В моем браузере Chrome было 2 (!) Файла cookie для этого домена, по-видимому, потому что я запускал приложение в том же домене, что и другое приложение, но с другим портом (т.е. Mydomain.com установил исходный файл cookie во время работы приложения с ошибками). на mydomain.com:123) Теперь, видимо, Chrome отправил неправильный файл cookie, поэтому защита CSRF не смогла связать токен с правильным сеансом.

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

Ответ 13

У меня была та же ошибка, но в моем случае проблема заключалась в том, что мое приложение использовало несколько доменов первого уровня, в то время как cookie использовал один. Удаление cookie_domain: «.%domain%» из framework.session в config.yml приводило к тому, что cookie по умолчанию использовался для любого домена, на котором была форма, и это config.yml проблему.

Ответ 14

Это кажется проблемой при использовании bootstrap, если вы не передаете форму <

>. Кроме того, проблемы возникают только при вводе типа = «скрытый». Если вы проверите страницу с помощью формы, вы обнаружите, что скрытый ввод не является частью разметки вообще или визуализируется, но не представляется по какой-либо причине. Как было предложено выше, добавление <> или перенос ввода, как показано ниже, должен сделать трюк.

Источник

Методы защиты от CSRF-атаки

Что такое CSRF атака?

Ознакомиться с самой идеей атаки CSRF можно на классических ресурсах:

Выдержка из ответа на SO:

Как от нее защититься?

Эффективным и общепринятым на сегодня способом защиты от CSRF-Атаки является токен. Под токеном имеется в виду случайный набор байт, который сервер передает клиенту, а клиент возвращает серверу.

Защита сводится к проверке токена, который сгенерировал сервер, и токена, который прислал пользователь.

А что, собственно, защищать?

На Habrahabr опубликована статья от Yandex, в которой описано, почему писать свои сервисы нужно, руководствуясь стандартом.

Требования к токену:

На первом MeetUp’е PDUG Тимур Юнусов (руководитель отдела безопасности банковских
систем Positive Technologies
) рассказывал, почему именно такие требования предъявляются к CSRF-Токену и чем грозит пренебрежение ими.

Требования к Web-Сервису и окружению:

Отсутствие XSS уязвимостей

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

Таким образом, XSS уязвимости могут быть использованы для получения текущего токена.

Отсутствие malware на машине клиента

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

Методы защиты

Существует 3 метода использования токенов для защиты web-сервисов от CSRF атак:

Synchronizer Tokens

Простой подход, использующийся повсеместно. Требует хранения токена на стороне сервера.

При старте сессии на стороне сервера генерируется токен.

Токен кладется в хранилище данных сессии (т.е. сохраняется на стороне сервера для последующей проверки)

В ответ на запрос (который стартовал сессию) клиенту возвращается токен.

Если рендеринг происходит на сервере, то токен может возвращаться внутри HTML, как, например, одно из полей формы, или внутри тега.

В случае, если ответ возвращается для JS приложения, токен можно передавать в header (часто для этого используют X-CSRF-Token )

При последующих запросах клиент обязан передать токен серверу для проверки.

При рендере контента сервером токен принято возвращать внутри POST данных формы.

JS приложения обычно присылают XHR запросы с header ( X-CSRF-Token ), содержащим токен.

Если оба токена совпадают, то запрос не подвергся CSRF-Атаке, в ином случае — логируем событие и отклоняем запрос.

На выходе имеем:

Защита от CSRF на хорошем уровне

Токен обновляется только при пересоздании сессии, а это происходит, когда сессия истекает

Во время жизни одной сессии все действия будут проверяться по одному токену.

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

Бесплатная поддержка multi-tab в браузере.

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

Double Submit Cookie

Этот подход не требует хранения данных на стороне сервера, а значит, является Stateless. Используется, если вы хотите уметь быстро и качественно масштабировать свой Web-сервис горизонтально.
Идея в том, чтобы отдать токен клиенту двумя методами: в куках и в одном из параметров ответа (header или внутри HTML).

При запросе от клиента на стороне сервера генерируется токен. В ответе токен возвращается в cookie (например, X-CSRF-Token ) и в одном из параметров ответа (в header или внутри HTML).

В последующих запросах клиент обязан предоставлять оба полученных ранее токена. Один как cookie, другой либо как header, либо внутри POST данных формы.

Если оба токена совпадают, то запрос не подвергся CSRF-Атаке, в ином случае — логируем событие и отклоняем запрос.

На выходе имеем:

Stateless CSRF защиту.

Таким образом, если ваш сервис доступен на домене 3-го уровня, а злоумышленник имеет возможность зарегистрировать свой ресурс на вашем домене 2-го уровня, то устанавливайте cookie на свой домен явно.

Encrypted Token

Так же как и Double Submit, является Stateless подходом. Основная — если вы зашифруете надежным алгоритмом какие-то данные и передадите их клиенту, то клиент не сможет их подделать, не зная ключа. Этот подход не требует использования cookie. Токен передаётся клиенту только в параметрах ответа.

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

При запросе от клиента на стороне сервера генерируется токен.

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

Минимально необходимые факты — это идентификатор пользователя и timestamp. В ответе токен возвращается в одном из параметров ответа (В header или внутри HTML).

В последующих запросах клиент обязан предоставлять полученный ранее токен.

Валидация токена заключается в его расшифровке и сравнения фактов, полученных после расшифровки, с реальными. (Проверка timestamp необходима для ограничения времени жизни токена)

Если расшифровать не удалось либо факты не совпадают, считается, что запрос подвергся CSRF-Атаке.

На выходе имеем:

Stateless CSRF защиту

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

О реализации

Давайте генерировать новый токен на каждый запрос, не важно, каким HTTP-методом и с какой целью этот запрос сделан.

Таким образом мы получаем токен, который меняется постоянно.

Конечно, возникает вопрос организации multi-tab работы.

Синхронизация токенов между табами может быть реализована с использованием localStorage и его StorageEvent

Ограничиваем время жизни cookie, которое содержит токен, разумным значением. Например 30 минут.

Делаем cookie недоступной из JS (ставим HTTPOnly=true)

Используем TLS для предотвращения MITM

При этом отправляем cookie только по HTTPS (ставим Secure=true)

Размер токена не менее 32 байт.

Генерируем токен криптографически стойким генератором псевдослучайных чисел.

Для этого можно использовать системные функции:

Что еще нужно знать?

Токены — обязательная защита от CSRF.

Проверяйте, но не полагайтесь только на X-Requested-With: XMLHttpRequest

Не передавайте токены в URL

Same Site

Сейчас идет работа над спецификацией атрибута «Same-Site» у cookies (последняя версия на момент написания статьи).

Такой атрибут даст возможность разработчикам явно указывать, что cookie не нужно передавать, если запрос идет с сайта, отличного от того, на котором cookie была установлена. А, значит, у нас появится возможность защищать ресурсы от CSRF без использования дополнительных инструментов.

Браузер Chrome уже сейчас поддерживает эту возможность.

Чуть больше информации о том, как и почему доступно на Stack Exchange.

Источник

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

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