stringtranslate.com

SQL-инъекция

Классификация векторов атак с помощью SQL-инъекций в 2010 г.
Классификация векторов атак с помощью SQL-инъекций по состоянию на 2010 г.

В вычислительной технике SQL-инъекция — это метод внедрения кода , используемый для атаки на приложения, управляемые данными, при котором вредоносные операторы SQL вставляются в поле ввода для выполнения (например, для передачи содержимого базы данных злоумышленнику). [1] [2] SQL-инъекция должна использовать уязвимость безопасности в программном обеспечении приложения, например, когда пользовательский ввод либо неправильно фильтруется для строковых литералов escape-символов, встроенных в операторы SQL, либо когда пользовательский ввод не является строго типизированным и неожиданно выполняется. SQL-инъекция в основном известна как вектор атаки на веб-сайты, но может использоваться для атаки на любой тип базы данных SQL.

Атаки с помощью SQL-инъекций позволяют злоумышленникам подделать личность , подделать существующие данные , вызвать проблемы с отказом, такие как аннулирование транзакций или изменение баланса, обеспечить полное раскрытие всех данных в системе, уничтожить данные или сделать их недоступными иным образом, а также стать администраторами системы. сервер базы данных. Документоориентированные базы данных NoSQL также могут быть подвержены этой уязвимости безопасности. [3]

В исследовании 2012 года было отмечено, что среднее веб-приложение подвергалось четырем атакам в месяц, а розничные торговцы подвергались вдвое большему количеству атак, чем другие отрасли. [4]

История

Первые публичные обсуждения внедрения SQL начали появляться примерно в 1998 году; [5] например, статья 1998 года в журнале Phrack Magazine . [6]

Форма

SQL-инъекция (SQLI) была признана одной из 10 крупнейших уязвимостей веб-приложений в 2007 и 2010 годах по версии Open Web Application Security Project . [7] В 2013 году SQLI был признан атакой номер один в первой десятке OWASP. [8] Существует четыре основных подкласса SQL-инъекций:

  • SQL-инъекция + недостаточная аутентификация [9]
  • SQL-инъекция + DDoS- атаки [10]
  • SQL-инъекция + перехват DNS [11]
  • SQL-инъекция + XSS [12]

Storm Worm — это одно из представлений составного SQLI. [13]

Эта классификация отражает состояние SQLI с учетом ее развития до 2010 года — дальнейшее усовершенствование продолжается. [14]

Технические реализации

Неправильно построенные операторы SQL

Эта форма внедрения основана на том факте, что операторы SQL состоят как из данных, используемых оператором SQL, так и из команд, управляющих выполнением оператора SQL. Например, в операторе SQL строка « » — это данные, а фрагмент — это пример команды ( в этом примере значение также является данными).select * from person where name = 'susan' and age = 2susanand age = 22

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

В качестве простого примера представьте, что данные susanв приведенном выше операторе были предоставлены пользователем. Пользователь ввел строку ' susan' (без апострофов) в поле ввода текста веб-формы, и программа использовала операторы конкатенации строк для формирования приведенного выше оператора SQL из трех фрагментов , введенных пользователем ' ' и .select * from person where name='susan' and age = 2

Теперь представьте, что вместо того, чтобы войти, susanзлоумышленник вошел .' or 1=1; --

Программа будет использовать тот же подход к конкатенации строк с тремя фрагментами , пользовательским вводом и конструкцией оператора . Многие базы данных игнорируют текст после строки '--', поскольку это обозначает комментарий. Структура команды SQL изменена, и она будет выбирать все строки с людьми, а не только строки с именем «Сьюзан», возраст которых равен 2. Злоумышленнику удалось создать строку данных, которая выходит из контекста данных и входит в контекст команды.select * from person where name='' or 1=1; --' and age = 2select * from person where name='' or 1=1; -- and age = 2select * from person where name='' or 1=1;

Теперь представлен более сложный пример.

Представьте, что программа создает оператор SQL, используя следующую команду присвоения строки:

var statement = "SELECT * FROM users WHERE name = '" + userName + "'";

Этот код SQL предназначен для извлечения записей указанного имени пользователя из таблицы пользователей. Однако если переменная userName создана злонамеренным пользователем определенным образом, оператор SQL может сделать больше, чем предполагал автор кода. Например, установив переменную «userName» как:

' ИЛИ ​​'1'='1

или использование комментариев, чтобы даже заблокировать остальную часть запроса (существует три типа комментариев SQL [15] ). Все три строки имеют пробел в конце:

' ИЛИ ​​'1'='1' --' ИЛИ ​​'1'='1' {' ИЛИ ​​'1'='1' /*

отображает один из следующих операторов SQL на родительском языке:

ВЫБЕРИТЕ * ИЗ пользователей WHERE name = '' OR '1' = '1' ;         
ВЫБЕРИТЕ * ОТ пользователей WHERE name = '' OR '1' = '1' -- ';          

Если бы этот код использовался в процедуре аутентификации, то этот пример можно было бы использовать для принудительного выбора каждого поля данных (*) от всех пользователей, а не от одного конкретного имени пользователя, как предполагал кодировщик, поскольку оценка '1'= «1» всегда верно.

Следующее значение «userName» в приведенном ниже операторе приведет к удалению таблицы «users», а также к выбору всех данных из таблицы «userinfo» (по сути, раскрытию информации о каждом пользователе) с использованием API , который допускает несколько утверждений:

а';DROP TABLE users; SELECT * FROM userinfo WHERE 't' = 't

Эти входные данные отображают окончательный оператор SQL следующим образом и указывают:

ВЫБЕРИТЕ * ОТ пользователей WHERE name = 'a' ; УДАЛЕНИЕ ТАБЛИЦЫ пользователей ; ВЫБЕРИТЕ * ИЗ информации пользователя ГДЕ 't' = 't' ;                 

Хотя большинство реализаций SQL-сервера позволяют таким образом выполнять несколько операторов за один вызов, некоторые API-интерфейсы SQL, такие как функция PHPmysql_query() , не позволяют этого по соображениям безопасности. Это не позволяет злоумышленникам вводить совершенно отдельные запросы, но не мешает им изменять запросы.

Слепая SQL-инъекция

Слепая SQL-инъекция используется, когда веб-приложение уязвимо для SQL-инъекции, но результаты инъекции не видны злоумышленнику. Страница с уязвимостью может не отображать данные, но будет отображаться по-разному в зависимости от результатов логического оператора, внедренного в законный оператор SQL, вызванный для этой страницы. Этот тип атаки традиционно считался трудоемким, поскольку для каждого восстановленного бита необходимо было создавать новый оператор, и в зависимости от его структуры атака может состоять из множества неудачных запросов. Последние достижения позволили каждому запросу восстанавливать несколько битов без каких-либо неудачных запросов, что обеспечивает более последовательное и эффективное извлечение. [16] Существует несколько инструментов, которые могут автоматизировать эти атаки после того, как будут установлены местоположение уязвимости и информация о цели. [17]

Условные ответы

Один тип слепой SQL-инъекции заставляет базу данных оценивать логический оператор на экране обычного приложения. Например, веб-сайт с обзором книг использует строку запроса , чтобы определить, какой обзор книги отображать. Таким образом, URL-адрес https://books.example.com/review?id=5 заставит сервер выполнить запрос.

ВЫБЕРИТЕ * ИЗ рецензий на книги WHERE ID = '5' ;       

откуда он будет заполнять страницу обзора данными из обзора с идентификатором 5, хранящимися в таблице bookreviews. Запрос полностью выполняется на сервере; пользователь не знает имен базы данных, таблицы или полей, а также не знает строку запроса. Пользователь видит только то, что указанный выше URL-адрес возвращает рецензию на книгу. Хакер может загрузить URL-адреса и , что может привести к запросамhttps://books.example.com/review?id=5 OR 1=1https://books.example.com/review?id=5 AND 1=2

ВЫБЕРИТЕ * ИЗ рецензий на книги ГДЕ ID = '5' ИЛИ ​​'1' = '1' ; ВЫБЕРИТЕ * ИЗ рецензий на книги WHERE ID = '5' AND '1' = '2' ;                  

соответственно. Если исходный отзыв загружается с URL-адресом «1=1», а с URL-адреса «1=2» возвращается пустая страница или страница с ошибкой, а возвращаемая страница не была создана для предупреждения пользователя, введенные данные недействительны или по другим причинам. словами, был перехвачен входным тестовым сценарием, сайт, скорее всего, уязвим для атаки SQL-инъекцией, поскольку в обоих случаях запрос, скорее всего, пройдет успешно. Хакер может продолжить работу с этой строкой запроса, предназначенной для раскрытия номера версии MySQL , работающей на сервере: , которая в противном случае покажет обзор книги на сервере, на котором работает MySQL 4, а в противном случае — пустую страницу или страницу с ошибкой. Хакер может продолжать использовать код в строках запроса для достижения своей цели напрямую или получить дополнительную информацию с сервера в надежде обнаружить другой путь атаки. [18] [19]https://books.example.com/review?id=5 AND substring(@@version, 1, INSTR(@@version, '.') - 1)=4

SQL-инъекция второго порядка

SQL-инъекция второго порядка происходит, когда отправленные значения содержат вредоносные команды, которые сохраняются, а не выполняются немедленно. В некоторых случаях приложение может правильно закодировать оператор SQL и сохранить его как действительный SQL. Затем другая часть этого приложения без элементов управления для защиты от внедрения SQL может выполнить этот сохраненный оператор SQL. Эта атака требует дополнительных знаний о том, как отправленные значения используются в дальнейшем. Автоматизированные сканеры безопасности веб-приложений не смогут легко обнаружить этот тип SQL-инъекции, и, возможно, им придется вручную указать, где проверять наличие доказательств того, что такая попытка предпринимается.

смягчение последствий

SQL-инъекция — это хорошо известная атака, которую легко предотвратить с помощью простых мер. После очевидной атаки SQL-инъекцией на TalkTalk в 2015 году BBC сообщила, что эксперты по безопасности были ошеломлены тем, что такая крупная компания оказалась уязвимой для нее. [20] Такие методы, как сопоставление шаблонов, тестирование программного обеспечения и анализ грамматики, являются некоторыми распространенными способами смягчения этих атак. [2]

Побег

Самый простой способ предотвратить инъекции — экранировать все символы, имеющие особое значение в SQL. В руководстве к СУБД SQL объясняется, какие символы имеют особое значение, что позволяет создать полный черный список символов, требующих перевода. Например, каждое вхождение одинарной кавычки ( ') в строковом параметре должно начинаться с обратной косой черты ( \), чтобы база данных понимала, что одинарная кавычка является частью данной строки, а не ее ограничителем. PHP предоставляет mysqli_real_escape_string()функцию экранирования строк в соответствии с семантикой MySQL ; В следующем примере SQL-запрос параметризуется путем экранирования параметров имени пользователя и пароля:

$mysqli  =  новый  mysqli ( 'hostname' ,  'db_username' ,  'db_password' ,  'db_name' ); $query  =  sprintf ( "SELECT * FROM `Users` WHERE UserName='%s' AND Password='%s'" ,  $mysqli -> real_escape_string ( $username ),  $mysqli -> real_escape_string ( $password )); $mysqli -> запрос ( $query );

Полагаться на то, что программист экранирует все параметры запроса, чревато ошибками, поскольку легко забыть экранировать данную строку. Программист может реализовать свои собственные абстракции для автоматического экранирования указанных параметров, что может уменьшить подверженность ошибкам, если не полностью устранить их. [21]

Реляционные преобразователи объектов

Платформы объектно-реляционного сопоставления (ORM), такие как Hibernate и ActiveRecord, предоставляют объектно-ориентированный интерфейс для запросов к реляционной базе данных. Большинство, если не все, ORM автоматически обрабатывают экранирование, необходимое для предотвращения атак с использованием SQL-инъекций, как часть API запросов платформы. Однако многие ORM предоставляют возможность обходить свои средства сопоставления и генерировать необработанные операторы SQL; неправильное использование этой функции может привести к возможности инъекции. [22]

Параметризованные операторы

На большинстве платформ разработки можно использовать параметризованные операторы, которые работают с параметрами (иногда называемые заполнителями или переменными привязки ) вместо внедрения в оператор вводимых пользователем данных. Заполнитель может хранить только значение заданного типа, а не произвольный фрагмент SQL. Следовательно, SQL-инъекция будет просто рассматриваться как странное (и, вероятно, недопустимое) значение параметра. Во многих случаях оператор SQL фиксирован, и каждый параметр является скаляром , а не таблицей . Пользовательский ввод затем назначается (привязывается) к параметру. [23]

Проверка шаблона

Целочисленные, плавающие или логические строковые параметры можно проверить, чтобы определить, является ли их значение допустимым представлением данного типа. Строки, которые должны соответствовать определенному шаблону или условию (например, даты, UUID , номера телефонов), также можно проверить, чтобы определить, соответствует ли указанный шаблон.

Разрешения базы данных

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

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

запретить выбор в sys . sysobjects для входа в базу данных webdatabaselogon ; запретить выбор в sys . объекты в webdatabaselogon ; запретить выбор в sys . таблицы в webdatabaselogon ; запретить выбор в sys . просмотры в webdatabaselogon ; запретить выбор в sys . пакеты в webdatabaselogon ;                         

Примеры

В популярной культуре

Смотрите также

Рекомендации

  1. ^ Майкрософт. «SQL-инъекция». Архивировано из оригинала 2 августа 2013 года . Проверено 4 августа 2013 г. SQL-инъекция — это атака, при которой вредоносный код вставляется в строки, которые затем передаются экземпляру SQL Server для анализа и выполнения. Любую процедуру, создающую инструкции SQL, следует проверять на наличие уязвимостей внедрения, поскольку SQLi Server будет выполнять все полученные синтаксически допустимые запросы. Опытный и решительный злоумышленник может манипулировать даже параметризованными данными.
  2. ^ Аб Чжо, З.; Кай, Т.; Чжан, X.; Льв, Ф. (апрель 2021 г.). «Долгая краткосрочная память на абстрактном синтаксическом дереве для обнаружения SQL-инъекций». Программное обеспечение ИЭПП . 15 (2): 188–197. дои : 10.1049/sfw2.12018. ISSN  1751-8806. S2CID  233582569.
  3. ^ «Взлом NodeJS и MongoDB | Блог Websecurify» . Проверено 15 ноября 2023 г.
  4. ^ Имперва (июль 2012 г.). «Отчет об атаке на веб-приложение Imperva» (PDF) . Архивировано из оригинала (PDF) 7 сентября 2013 года . Проверено 4 августа 2013 г. Розничные предприятия страдают в 2 раза от атак с внедрением SQL-кода, чем другие отрасли. / Хотя большинство веб-приложений подвергаются 4 или более кампаниям веб-атак в месяц, некоторые веб-сайты постоянно подвергаются атакам. / Один наблюдаемый веб-сайт подвергался атакам 176 дней из 180, или 98% времени.
  5. Шон Майкл Кернер (25 ноября 2013 г.). «Как была обнаружена SQL-инъекция? Исследователь, когда-то известный как Щенок Rain Forrest, объясняет, как он обнаружил первую SQL-инъекцию более 15 лет назад». Архивировано из оригинала 18 марта 2014 года . Проверено 15 ноября 2023 г.
  6. Джефф Форристал (подписавшись как Rain.forest.puppy) (25 декабря 1998 г.). «Уязвимости веб-технологий NT». Журнал Фрак . 8 (54 (статья 8)). Архивировано из оригинала 19 марта 2014 года.
  7. ^ «Категория: Десять лучших проектов OWASP» . ОВАСП. Архивировано из оригинала 19 мая 2011 года . Проверено 3 июня 2011 г.
  8. ^ «Категория: Десять лучших проектов OWASP» . ОВАСП. Архивировано из оригинала 9 октября 2013 года . Проверено 13 августа 2013 г.
  9. ^ «WHID 2007-60: взломан блог службы безопасности Кембриджского университета» . Ксиом. Архивировано из оригинала 19 июня 2011 года . Проверено 3 июня 2011 г.
  10. ^ «WHID 2009-1: Кибервойна конфликта в Газе» . Ксиом. Архивировано из оригинала 7 октября 2011 года . Проверено 3 июня 2011 г.
  11. ^ «Список инцидентов веб-хакинга: захват DNS» . Ксиом. Архивировано из оригинала 18 июня 2009 года.
  12. Dark Reading Staff (13 мая 2008 г.). «Третья волна веб-атак не последняя». Мрачное чтение . Информация . Проверено 1 января 2024 г.
  13. Данчев, Данчо (23 января 2007 г.). «Мысленные потоки знаний по информационной безопасности: социальная инженерия и вредоносное ПО». Ddanchev.blogspot.com. Архивировано из оригинала 21 июля 2011 года . Проверено 3 июня 2011 г.
  14. ^ Дельчев, Крассен. «Новые атаки Web 2.0». Бакалавр наук Диссертация (на английском и немецком языках). Рур-Университет Бохума. Архивировано из оригинала 2 апреля 2012 года . Проверено 18 февраля 2010 г.
  15. ^ «Как вводить комментарии SQL» (PDF) , IBM Informix Guide to SQL: Syntax , IBM, стр. 13–14, заархивировано из оригинала (PDF) 24 февраля 2021 г. , получено 4 июня 2018 г.
  16. ^ «Извлечение нескольких битов из каждого запроса из уязвимостей полного слепого внедрения SQL» . Взломайте все вещи. Архивировано из оригинала 8 июля 2016 года . Проверено 8 июля 2016 г.
  17. ^ «Использование SQLBrute для грубого подбора данных из слепой точки внедрения SQL» . Джастин Кларк. Архивировано из оригинала 14 июня 2008 года . Проверено 18 октября 2008 г.
  18. ^ macd3v. «Учебное пособие по слепому SQL-инъекции». Архивировано из оригинала 14 декабря 2012 года . Проверено 6 декабря 2012 г.{{cite web}}: CS1 maint: числовые имена: список авторов ( ссылка )
  19. ^ Андрей Рассохин; Дмитрий Олексюк. «Ботнет TDSS: полное раскрытие». Архивировано из оригинала 9 декабря 2012 года . Проверено 6 декабря 2012 г.
  20. ^ «Вопросы для TalkTalk - BBC News» . Новости BBC . 26 октября 2015 года. Архивировано из оригинала 26 октября 2015 года . Проверено 26 октября 2015 г.
  21. ^ «Прозрачный уровень запросов для MySQL». Роберт Эйзель. 8 ноября 2010 г. Архивировано из оригинала 11 ноября 2010 г.
  22. ^ «Атаки и предотвращение SQL-инъекций: Полное руководство» . appsecmonkey.com . 13 февраля 2021 г. . Проверено 24 февраля 2021 г.
  23. ^ «Шпаргалка по предотвращению SQL-инъекций» . Откройте проект безопасности веб-приложений. Архивировано из оригинала 20 января 2012 года . Проверено 3 марта 2012 г.
  24. ^ "Отчеты о веб-дырах догадок" . БезопасностьФокус . 6 марта 2002 г. Архивировано из оригинала 9 июля 2012 г.
  25. ^ «WHID 2005-46: Подросток использует SQL-инъекцию, чтобы проникнуть на веб-сайт журнала по безопасности» . Консорциум по безопасности веб-приложений. 1 ноября 2005 года. Архивировано из оригинала 17 января 2010 года . Проверено 1 декабря 2009 г.
  26. ^ «WHID 2006-3: Российские хакеры взломали сайт правительства РИ» . Консорциум по безопасности веб-приложений. 13 января 2006. Архивировано из оригинала 13 февраля 2011 года . Проверено 16 мая 2008 г.
  27. ^ «Антиамериканские хакеры проникают на армейские серверы» . Информационная неделя . 29 мая 2009 года. Архивировано из оригинала 20 декабря 2016 года . Проверено 17 декабря 2016 г.
  28. Алекс Пападимулис (15 апреля 2008 г.). «Оклахома сливает десятки тысяч номеров социального страхования и другие конфиденциальные данные» . Ежедневный WTF . Архивировано из оригинала 10 мая 2008 года . Проверено 16 мая 2008 г.
  29. ^ «Американец 'украл 130 миллионов номеров карт'» . Би-би-си. 17 августа 2009 года. Архивировано из оригинала 18 августа 2009 года . Проверено 17 августа 2009 г.
  30. ^ "Атака пиратской бухты" . 7 июля 2010 г. Архивировано из оригинала 24 августа 2010 г.
  31. ^ «Мигрировали ли Little Bobby Tables в Швецию?» Alicebobandmallory.com. Архивировано из оригинала 1 июля 2012 года . Проверено 3 июня 2011 г.
  32. ^ «Сайт Королевского флота атакован румынским хакером» . Новости BBC. 8 ноября 2010 года. Архивировано из оригинала 9 ноября 2010 года . Проверено 15 ноября 2023 г.
  33. Сэм Кили (25 ноября 2010 г.). «Супервирус — мишень для кибертеррористов». Архивировано из оригинала 28 ноября 2010 года . Проверено 25 ноября 2010 г.
  34. ^ «Хакер взламывает базу данных Barracuda Networks» . Архивировано из оригинала 27 июля 2011 года.
  35. ^ «Информация о взломе пароля пользователя сайта» . Dslreports.com. Архивировано из оригинала 18 октября 2012 года . Проверено 3 июня 2011 г.
  36. ^ «DSLReports сообщает, что информация об участниках украдена» . Новости Cnet. 28 апреля 2011. Архивировано из оригинала 21 марта 2012 года . Проверено 29 апреля 2011 г.
  37. ^ «Нарушение DSLReports.com выявило более 100 000 учетных записей» . Технический вестник. 29 апреля 2011 года. Архивировано из оригинала 30 апреля 2011 года . Проверено 29 апреля 2011 г.
  38. ^ «LulzSec взламывает Sony Pictures, раскрывает 1 миллион незащищенных паролей», электроника.com , 2 июня 2011 г., заархивировано из оригинала 6 июня 2011 г. , получено 3 июня 2011 г.
  39. ^ «Imperva.com: Взлом PBS - как хакеры, вероятно, это сделали» . Архивировано из оригинала 29 июня 2011 года . Проверено 1 июля 2011 г.
  40. ^ Нгак, Ченда. «Сообщается, что Yahoo взломали: ваша учетная запись в безопасности?». Новости CBS . Архивировано из оригинала 14 июля 2012 года . Проверено 16 июля 2012 г.
  41. Яп, Джейми (12 июля 2012 г.). «450 000 паролей пользователей были раскрыты в результате взлома Yahoo». ЗДНет . Архивировано из оригинала 2 июля 2014 года . Проверено 18 февраля 2017 г.
  42. Перлрот, Николь (3 октября 2012 г.). «Хакеры взломали 53 университета и выгрузили в Интернет тысячи личных записей». Газета "Нью-Йорк Таймс . Архивировано из оригинала 5 октября 2012 года.
  43. Ковач, Эдуард (4 ноября 2013 г.). «Хакеры сливают данные, предположительно украденные с веб-сайта Торговой палаты Китая» . Новости софтпедии . Архивировано из оригинала 2 марта 2014 года . Проверено 27 февраля 2014 г.
  44. ^ Дэймон Поутер. «Сплоченная» банда российских хакеров накопила 1,2 миллиарда удостоверений личности, заархивировано 14 июля 2017 г., в Wayback Machine , журнал PC Magazine , 5 августа 2014 г.
  45. ^ Николь Перлрот. Русская банда накопила более миллиарда интернет-паролей, заархивированных 27 февраля 2017 года в Wayback Machine , The New York Times , 5 августа 2014 года.
  46. ^ «TalkTalk получил рекордный штраф в размере 400 000 фунтов стерлингов за неспособность предотвратить атаку в октябре 2015 года» . 5 октября 2016 года. Архивировано из оригинала 24 октября 2016 года . Проверено 23 октября 2016 г.
  47. Катания, Сэм (13 августа 2020 г.). «Уязвимость на веб-сайте Link могла раскрыть данные о влюбленных студентах Стэнфорда». Стэнфорт Дейли . Проверено 5 сентября 2020 г.
  48. Гудин, Дэн (2 марта 2021 г.). «Ошибка кода новичка до взлома Gab произошла от технического директора сайта». Арс Техника .
  49. Гудин, Дэн (8 марта 2021 г.). «Гэб, приют для теорий заговора в поддержку Трампа, снова был взломан». Арс Техника .
  50. ^ Манро, Рэндалл. «XKCD: Подвиги мамы». Архивировано из оригинала 25 февраля 2013 года . Проверено 26 февраля 2013 г.
  51. ^ «Руководство по SQL-инъекциям по таблицам Бобби» . 15 сентября 2009 года. Архивировано из оригинала 7 ноября 2017 года . Проверено 30 октября 2017 г.
  52. ^ "Я работаю под названием SQL-инъекция. Не заболев, кто-то начал работать ;)" . Небезпечник (на польском языке). 11 сентября 2014 года. Архивировано из оригинала 24 сентября 2014 года . Проверено 26 сентября 2014 г.

Внешние ссылки