Что такое SQL-инъекция?

SQL-инъекция - способ взлома сайтов через изменение кода SQL-запросов к базам данных, с которыми взаимодействует сайт.

Когда говорят об уязвимостях и хакерских атаках на сайты, многие пользователи представляют себе очень туманно, о чём идёт речь. На самом деле, конечно же, методы взлома сайтов просты как всё гениальное. SQL-инъекция - один из самых распространённых приёмов взлома тех сайтов, которые не позаботились должным образом даже об элементарных способах обеспечения собственной безопасности.

SQL-инъекция - способ взлома сайтов через изменение кода SQL-запросов к базам данных, с которыми взаимодействует сайт. Инъекция заключается в том, что в запрос внедряется код, модифицирующий его таким образом, чтобы вместо нормальных действий, предусмотренных программистами, создававшими сайт, выполнялся произвольный код, который внедряют взломщики. Произвольный код, впрочем, обычно бывает не совсем произвольным, а выполняет вполне конкретные задачи: например, удаляет информацию из базы данных или крадёт её, передавая через Интернет. Таким образом, SQL-инъекция используется, чаще всего, для нарушения работы сайтов и для хищения данных (например, личных данных пользователей).

Каким образом технически реализуют злоумышленники SQL-инъекцию? Первый способ заключён в использовании особенностей интерпретаторов. Дело в том, что существуют символы, которые интерпретаторы языков, на которых пишутся web-приложения, воспринимают как символы, ограничивающие строку с запросом. Другой способ состоит в использовании служебных слов языка запросов в данных, которые включаются в запрос - как правило, это данные, которые вводятся пользователем в специальные формы на страницах сайта. Таким образом можно, например, изменять критерии, по которым отбираются данные, и таким образом получить несанкционированный доступ к информации.

С точки зрения программиста, который пишет web-приложения, защититься от SQL-инъекции очень просто. Для этого достаточно провести несложную обработку входных данных, в ходе которой заменить все потенциально опасные символы на безопасные последовательности, которые можно использовать в тексте запроса (это называется "экранировать спецсимволы"). Для экранирования служебных слов SQL'а нужно заключать в кавычки те участки, которые могут потенциально приводить к SQL-инъекции. Многие современные средства создания web-приложений имеют в своём арсенале классы, имеющие встроенную защиту от SQL-инъекций.

 

Вадим СТАНКЕВИЧ

Версия для печатиВерсия для печати

Номер: 

29 за 2008 год

Рубрика: 

Software
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!