Документация для разработчиков
Темная тема

check_bitrix_sessid

bool
check_bitrix_sessid()(
	$varname='sessid'
)

Параметры функции

Параметр Описание
varnameИдентификатор сессии

Возвращаемое значение

Возвращает true, если верно условие $_REQUEST[$varname] == bitrix_sessid(), иначе false.

Примеры использования

if($arResult["Perm"]>=BLOG_PERMS_MODERATE && intval($_GET["delete_comment_id"])>0 && check_bitrix_sessid())
{
	/*Удаление комментария*/
} 


Пользовательские комментарии

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

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
0
Сергей Талызенков
check_bitrix_sessid() в init.php работать не будет
1
Дмитрий Мартынов
Указанный пример Александром Черкасовым не совсем корректен. Он будет работать для защиты от удаления вне своей сессии или поле разрыва сессии. Для защиты от удаления, в компоненте, после получения параметров, необходимо делать дополнительную проверку на соответствие прав.
7
Александр Черкасов
Защита форм, ссылок "Удалить" и других действий, зависящих от прав доступа текущего пользователя

Представим, что на вашем сайте выводится компонент новостей, в котором есть возможность удалить новость. Ссылка на удаление выглядит таким образом:
Код
www.mysite.ru/news/detail.php?ID=123&delete=Y
Далее недоброжелатель помещает эту ссылку в форуме, например, в теге <img src="www.mysite.ru/news/detail.php?ID=123&delete=Y" />. Зайдя на этот форум и будучи авторизованным на сайте www.mysite.ru, вы, ничего неподозревая, удалите новость c идентификатором 123. Т.о. даже несмотря на проверку прав доступа в компоненте, недображелатель сможет удалить новость на вашем сайте. Для защиты от таких атак следует дополнительно проверять идентификатор сессии текущего пользователя, передавая его в ссылке или в скрытом поле формы.
Для этого в продукте есть ряд функций в помощь:

string bitrix_sessid() - возвращает идентификатор сессии, предварительно обработанный функцией md5.
bool check_bitrix_sessid($varname='sessid') - возвращает true, если верно условие $_REQUEST[$varname] == bitrix_sessid(), иначе false.
string bitrix_sessid_get($varname='sessid') - возвращает строку вида $varname=идентификатор сессии
string bitrix_sessid_post($varname='sessid') - возвращает строку вида <input type="hidden" name="$varname" id="$varname" value="идентификатор сесии" />

Передача идентификатора сессии в форме
Код
<form method="post" action="/news/add.php">
<?=bitrix_sessid_post()?>
Title: <input type="text" name="NAME" size="40" maxlength="255" value="">
</form>
Передача идентификатора в ссылке
Код
<a href="/news/detail.php?ID=123&delete=Y&<?=bitrix_sessid_get()?>">Удалить</a>
Проверка сессии
Код
if($arResult["Perm"]>=BLOG_PERMS_MODERATE && intval($_GET["delete_comment_id"])>0 && check_bitrix_sessid())
{
   /*Удаление комментария*/
} 


Источник: статья в блоге http://dev.1c-bitrix.ru/community/blogs/cookbook/163.php
© «Битрикс», 2001-2024, «1С-Битрикс», 2024
Наверх