При удалении элементов через URL вида www.site.ru/news/detail.php?ID=777&del=Y возникает CSRF-уязвимость. Атакующий может внедрить на стороннем сайте изображение с таким URL:
<img src="www.site.ru/news/detail.php?ID=777&del=Y" />Когда авторизованный администратор откроет страницу с этим изображением, браузер выполнит запрос и элемент будет удалён без его ведома.
Решение — сессионные идентификаторы Bitrix
Bitrix API предоставляет четыре функции для защиты от CSRF:
bitrix_sessid()— возвращает идентификатор текущей сессии (md5)check_bitrix_sessid($varname='sessid')— проверяет совпадение идентификатораbitrix_sessid_get($varname='sessid')— возвращает строку для передачи в URLbitrix_sessid_post($varname='sessid')— возвращает скрытое поле для формы
Пример реализации
if ($arResult["Perm"] >= BLOG_PERMS_MODERATE &&
intval($_GET["delete_comment_id"]) > 0 &&
check_bitrix_sessid()) {
/* удаление */
}Теперь атакующий не сможет повторить удаление — идентификатор сессии в запросе будет отличаться от серверного.
