Дайте определение понятию SQL-инъекции;
SQL-инъекция (атака посредством внедрения SQL кода) – атака, которая заключается во внедрении вредоносного кода через пользовательский интерфейс, который в процессе обработки внутри приложения будет преобразован в SQL запрос.
Опишите отличительные признаки, достоинства и недостатки типов инъекций, приведенных в лабораторной работе;
Каким образом можно защититься от SQL-инъекции?
Обнаружение в рамках приложения при построении кода – набор техник, используемых при программировании приложения
Минимизация прав доступа – субд не позволит исполнить код больше, чем пользователь, от имени к-го он выступает.
Использование авто-х средств обнаружение вторжения
Перечислите несколько программных техник, с помощью которых можно ограничить некоторые виды инъекций;
Фильтрация или экранирование спецсимволов, кавычек – превращает символы в текст
Фильтрация по типу данных и типизация данных – данные от пользователя нельзя вставлять в Sql-запрос. Получаемые данные необходимо приводить к тому типу, который ожидается базой.
Ограничение и возращение данных – получают только абсолютный минимум нужных данных
Применение подготовленных запросов
Учет размера буфера данных (?)
Чем метод передачи данных GET отличается от POST? Какие данные можно передавать через GET и какие через POST?
метод GET сообщает серверу, что пользователь хочет получить некоторые данные, а POST — что некоторые данные должны быть помещены на сервер
При использовании метода GET данные будут отображаться в URL строке браузера и могут быть перехвачены или сохранены в логах сервера. Метод POST позволяет передать данные в теле запроса, что делает их более безопасными.
Чего злоумышленник может добиться посредством SQLинъекции? За какие границы он не может выйти посредством одних только инъекций?
Приведите конкретный пример SQL-инъекции на следующем запросе: SELECT * FROM salaries WHERE user_name = '[userdata]'; – в запросе строка [userdata] заменяется на пользовательские данные.
Для чего в SQL-запрос добавляется оператор комментирования?
Сочетание символов -- (два дефиса) означает комментарий, соответственно, символы '; , которые добавляются приложением в конце запроса и завершают его, будут проигнорированы, вместо них останется только ; , указанный злоумышленником для составления синтаксически верного запроса.
Какие функции языка PHP могут использоваться для защиты от SQL-инъекций? Какие параметры они принимают и что делают?
*Всегда ли будет срабатывать последовательно выполняемая инъекция удаления той или иной таблицы? Почему?