На этом уроке мы сделаем бекап базы данных, затем продемонстрируем «взлом» страницы посредством SQL-инъекции, покажем, как от этого защититься и потом восстановим базу данных.
Дата отправки отчёта:
18 декабря 2016 г.
Задание выполнено: за
1 час. 06 мин.
Чему научился:
Узнал что такое sql-инъекция и как с ней бороться.
Что было сложным:
Ничего такого. Немножко не приятно, что бэкап можно потерять одним не острожным движением. Правило 3 мест хранения бэкапа тут актуально.
Комментарии:
Кстати говоря при некотором изменении метода Select и добавлении параметров к SqlCommand можно вообще ничего не экранировать и так будет счастье, просто немножко усложнится метод, но зато будет универсальный для всех запросов в том числе и для update и delete.
я делаю проще, либо передаются исключительно числовые данные, либо если нужна красота и текст, то ограничиваю типы доступных символов и вуаля, проблем никогда нет.
Научился: Интересно, что у меня при таком же, как в уроке, запросе, в ответ просто приходит ошибка, а не история по номеру в начале "инъекции". Видимо, какая-то разница в реализации MySQL и MSSQL.
Конечно, если н епредусмотреть защиту от SQL-инъекций, то возможности для злоумышленника поистине безграничны :) Интересно почитать на эту тему, потому что подозреваю, что одной такой предосторожности, как в уроке, явно недостаточно.
Научился: Сделалал бекап базы данных двумя способами
Написал в адресной строке браузера SQL-инъекцию
Убедился, что она сработала: записи из таблицы удалены
Добавил в модель MySQL функцию addslashes()
Проверил, что SQL-инъекция не проходит
Восстановил базу данных из бекапа
Трудности: все понятно, интересная тема.
В какую сторону нужно копать, чтобы разобраться с одинарными ковычками и слешами в представлении SQL запроса в коде?