Динамічні засоби SOQL створення рядка SOQL під час виконання з кодом Apex. В основному він використовується для створення більш гнучких запитів на основі введення користувача.
Щоб запобігти такому типу атак, ми використовувати зв’язані змінні в запиті SOQL. Використовуючи зв’язані змінні, введення користувача розглядатиметься як рядковий літерал, який використовується для зіставлення з полем імені замість того, щоб вважатися синтаксисом запиту SOQL.
Переконайтеся, що поле не використовується таким чином, щоб порушити запит SOQL. Для кожного посилання перевірте рядки запиту на: Агрегати > MIN, MAX тощо. Результат будь-якого поля All Clear, на яке посилається в наведеному вище, змінює це поле на Blocked by Configuration.
Перший і найбільш рекомендований метод запобігання ін’єкції SOQL – це використовувати статичні запити зі змінними прив’язки. List<Acccount> acts=[SELECT Id, Name, Title FROM Account where Title=:title]; Цей крок гарантує, що введені користувачем дані оброблятимуться як змінна, а не як виконуваний елемент запиту.
Динамічний запит – це оновлюється кожного разу, коли його запускають або використовують в інших модулях, таких як Пошта, Звіти та Експорт. Результати динамічного запиту завжди відображають зміни, зроблені з часу останнього виконання запиту.