SQL-инъекции в ADOdb и общая безопасность веб-сайта

Я сделал довольно много чтения и до сих пор не понимаю 100%, как некоторые из инъекций SQL происходят!

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

1.Am Правильно, что SQL-инъекция может происходить ТОЛЬКО с методами POST или GET, что означает, что на веб-сайте это должна быть форма сообщения, например «регистрация или поиск» или запрос типа «search.php? Tags = love»?

Сказать, что это возможно, чтобы ввести следующий код, который имеет метод POST?

$name = trim($_POST['username']); $mail = trim($_POST['email']); $password = trim($_POST['password ']); if ($errors == "false") { $sql = "INSERT INTO clients SET name='" . mysql_real_escape_string($name) . "', mail='" . mysql_real_escape_string($mail) . "', password='" . mysql_real_escape_string(sha1($password)) . "'"; $connection->execute($sql); } 

2. У другого есть метод GET: rate.php?like&videoID=250&userID=30

 $sql = "SELECT videoID FROM likes WHERE videoID = '" .mysql_real_escape_string($videoID). "' AND UID = '" .mysql_real_escape_string($userID). "' LIMIT 1"; $connection->execute($sql); 

Пожалуйста, помогите тем, кто чувствует себя свободно с предметом, но используйте конкретные примеры.

Заранее спасибо,
Ilia

Атаки SQL-инъекций происходят, когда пользовательский ввод некорректно закодирован. Как правило, пользовательский ввод – это некоторые данные, которые пользователь отправляет с ее запросом, то есть значения в массивах $_GET , $_POST , $_COOKIE , $_REQUEST или $_SERVER . Тем не менее, пользовательский ввод может также поступать из множества других источников, таких как сокеты, удаленные веб-сайты, файлы и т. Д. Поэтому вы должны действительно рассматривать все, кроме констант (например, 'foobar' ) в качестве пользовательского ввода .

В mysql_real_escape_string используется для кодирования (= escape) пользовательских входов. Поэтому код корректен, т. Е. Не позволяет атаковать SQL-инъекциями.

Обратите внимание, что очень легко забыть вызов mysql_real_escape_string – и достаточно одного времени для опытного злоумышленника! Поэтому вы можете использовать современный PDO с подготовленными операторами вместо adodb.

Я тщательно изучал эту тему недавно и хотел бы поделиться с другими довольно интересным материалом, тем самым сделав мой вопрос более полным и поучительным для всех.

  • Предотвращение внедрения SQL с PHP Джоном Небелем
  • Уголок безопасности – SQL-инъекция Криса Шифлетта
  • Неожиданная инъекция SQL Александра Андонова
  • Mysql_real_escape_string () по сравнению с подготовленными заявлениями Илья Альшанецкий
  • Атака и защита от SQL-атаки со стороны Сагара Джоши
  • Инъекционные атаки SQL профессора Джима Уайтхеда
  • addslashes () vs mysql_real_escape_string () от Криса Шифлетта
  • Что представляет собой ошибка SQL Injection от Joel Spolsky
  • Предотвращение инъекций MySQL – SQL
  • Пошаговое руководство по внедрению SQL
  • Шифрование SQL Injection Cheat Sheet
  • Подготовленные утверждения в PHP и MySQLi


С YouTube

  • SQL Injection Myths & Fallacies: лучшие практики защиты Билла Карвина
  • Учебники PHP: безопасность – SQL-инъекция
  • Как SQL Inject с SQLMAP на Backtrack5 RC1

Из Википедии

  • Википедия – SQL-инъекция
  • Википедия – SQL

От OWASP

  • SQL-инъекция
  • Руководство по внедрению SQL
  • OWASP – предотвращение внедрения SQL
  • Шифрование предупреждений SQL Injection
  • Тестирование SQL-инъекций

Из руководства PHP

  • SQL-инъекция
  • Класс PDO – подготовленные заявления и хранимые процедуры
  • Улучшенное расширение MySQL
  • mysql_real_escape_string ()

От Microsoft и Oracle

  • Каков правильный способ предотвратить внедрение SQL в PHP-скрипты Microsoft?
  • Остановите атаки SQL-инъекций, прежде чем они перестанут вас Microsoft
  • Защита от SQL-инъекций от Oracle

Переполнение стека

  • Как я могу предотвратить SQL-инъекцию в PHP?
  • Как работает SQL-инъекция из комикса XBCD Bobby Tables?
  • https://stackoverflow.com/questions/1973/what-is-the-best-way-to-avoid-sql-injection-attacks
  • Что такое SQL-инъекция?
  • SQL-инъекция на INSERT
  • Как защитить эту функцию от SQL-инъекции?
  • Достаточно ли параметров для предотвращения инъекций Sql?
  • Сегодня инъекция SQL – это риск?
  • https://stackoverflow.com/questions/936254/sql-injection
  • SQL-инъекция этического взлома
  • Предотвращает ли этот код SQL-инъекцию?

Сканер SQL-инъекций

  • Топ-15 сканеров SQL-инъекций
  • Netsparker Community Edition, бесплатный сканер для инъекций SQL и сканер XSS