Правильне видалення елементів bitrix api

Програмування, як і мистецтво - одне слово, за яким ховається безліч занять ;)

Правильне видалення елементів [bitrix api]

Є така вразливість, коли атакуючий може видалити елемент, каталог або навіть інфоблок. Для цього потрібно знайти сторінку або скрипт, який виконує ці дії.

Наприклад, є функціонал виведення новин, причому користувач може як додавати так і видаляти новини. Посилання на видалення новини має ось так.

www.site.ru/news/detail.php?ID=777&del=Y

Тепер якщо ми додамо пост на форум або блоги і додай картинку з посиланням,

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') — повертає рядок виду

Передача ідентифікатора сесії у формі

Передача ідентифікатора у засланні

Перевірка сесії

Таким чином зловмисник навіть якщо зробить пакість то нічого не станеться як ID сесії буде різний.

Вирішив додати в собі в блог, щоб довго не шукати в хелпі і просто не забувати робити таку перевірку.