кодесурса
«SQL

Учебник по SQL-инъекциям

script1adsense2code
script1adsense3code

Вступление

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

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

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

«SQL

С помощью SQL Injection злоумышленник может получить несанкционированный доступ к базе данных и может создавать, читать, обновлять, изменять или удалять данные, хранящиеся в внутренней базе данных. В настоящее время почти все базы данных SQL, такие как Oracle, MySQL, PostgreSQL, MSSQL Server, MS Access, потенциально уязвимы для атак SQL-инъекций. В своей наиболее распространенной форме атака с использованием SQL-инъекции предоставляет доступ к конфиденциальной информации, такой как номера социального страхования, номер кредитной карты или другие финансовые данные.

Почему SQL инъекция?

- Определить вводимые параметры.
- Определите тип и версию базы данных.
- Откройте схему базы данных.
- Извлечение данных.
- Вставьте, измените или удалите данные.
- Отказ в обслуживании авторизованным пользователям путем блокировки или удаления таблиц.
- Обход аутентификации.
- Повышение привилегий.
- Выполнять удаленные команды, вызывая хранимые в СУБД функции, которые зарезервированы для администраторов.

Метод SQL-инъекции

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

Уязвимости

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

«уязвимость

Распространенной причиной того, что приложение уязвимо для внедрения SQL-кода, является неправильная фильтрация и отсутствие проверки для ввода данных пользователем. Формы ввода довольно распространены для сбора данных от пользователя. Таким образом, практически невозможно закрыть все точки входа для внедрения SQL-кода. Чтобы предотвратить атаки, разработчики должны применять правильную фильтрацию / проверку всех форм.

Уязвимые приложения

- Почти все базы данных SQL потенциально уязвимы, такие как MS SQL Server, DB2, Oracle, PostgreSQL, MySQL, MS Access, Sybase, Informix и т. Д.
- Доступ через приложения с использованием:
ASP, JSP, PHP
Perl и CGI скрипты, которые обращаются к базам данных
XML, XSL и XSQL
JavaScript
База данных конкретных веб-приложений
Много других

Технология веб-сервера

Веб-серверы - это компьютеры, которые доставляют веб-страницы. Каждый веб-сервер имеет IP-адрес и, возможно, доменное имя. Например, если вы введете URL /index.php в своем браузере, это отправит запрос на веб-сервер, доменное имя которого - w3resource.com. Затем сервер выбирает страницу с именем index.php и отправляет ее в ваш браузер. Веб-сервер хранит все файлы, необходимые для отображения веб-страниц на компьютере.

При передаче данных на сторону сервера из веб-страницы часто используется метод GET для добавления предоставленных пользователем данных в конце URL-адреса (например, example.com?q=userid&p=password). Для злоумышленника это открывает возможность получить значения, переданные таким образом, и совершить некоторые вредоносные действия.

Создайте и запустите простую форму входа:

Вот простая форма входа (form.html ), которая может аутентифицировать идентификатор пользователя и пароль.

«обеспечить

form.html

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8"> 
<title>SQL Injection form error example</title> 
<meta name="description" content="Twitter Bootstrap Version2.0 form error example from w3resource.com."> <!--<link href="http://twitter-bootstrap-v2/docs/assets/css/bootstrap.css" rel="stylesheet">--><style type="text/css">body{margin: 30px}:invalid { border-color: #e88;-webkit-box-shadow: 0 0 5px rgba(255, 0, 0, .8);-moz-box-shadow: 0 0 5px rbba(255, 0, 0, .8);-o-box-shadow: 0 0 5px rbba(255, 0, 0, .8);-ms-box-shadow: 0 0 5px rbba(255, 0, 0, .8);box-shadow:0 0 5px rgba(255, 0, 0, .8);}:required {border-color: #88a;-webkit-box-shadow: 0 0 5px rgba(0, 0, 255, .5);-moz-box-shadow: 0 0 5px rgba(0, 0, 255, .5);-o-box-shadow: 0 0 5px rgba(0, 0, 255, .5);-ms-box-shadow: 0 0 5px rgba(0, 0, 255, .5);box-shadow: 0 0 5px rgba(0, 0, 255, .5);}form {width:300px;margin: 20px auto;}input {font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;border:1px solid #ccc;font-size:20px;width:300px;min-height:30px;display:block;margin-bottom:15px;margin-top:5px;outline: none;-webkit-border-radius:5px;-moz-border-radius:5px;-o-border-radius:5px;-ms-border-radius:5px;border-radius:5px;}input[type=submit] {background:#066923;padding:10px;color: #fff;}</style>
</head>
<body>
<form action="action.php" method="POST"><label>User ID:</label><input type="text" id="uid" name="uid" placeholder="User ID" required><label>Password:</label><input type="password" id="passid" name="passid" required><input type="submit" value="Submit" />
</form>
</body>
</html>

Когда эта форма отправляется, имя пользователя и пароль передаются в сценарий action.php . Пользователь будет аутентифицирован путем предоставления правильного идентификатора пользователя и пароля. Процесс входа в систему осуществляется путем создания SQL-запроса и сравнения идентификатора пользователя и пароля с записями для входа в базу данных.

action.php

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>SQL Injection form error example</title>
 <meta name="description" content="Twitter Bootstrap Version2.0 form error example from w3resource.com."> <link href="http://localhost/twitter-bootstrap/twitter-bootstrap-v2/docs/assets/css/bootstrap.css" rel="stylesheet">
 </head>
 <body style="margin-top: 50px">
 <div class="container">
 <div class="row">
 <div class="span6">
 <?php$host="localhost";
 $username="root";$password="
 ";$db_name="hr";$con=mySQL_connect("$host",
 "$username",
 "$password")or 
die("cannot connect"); 
mySQL_select_db("$db_name")or
 die("cannot select DB");
$uid = $_POST['uid'];
$pid = $_POST['passid'];
$SQL = "select * from user_details where userid ='$uid' 
and password ='$pid' ";
$result = mySQL_query($SQL);
if(mySQL_num_rows($result)>0)
{echo "<h4>".
"-- Personal Information -- ".
$row[3]."</h4>",
"</br>";
while ($row=mySQL_fetch_row($result)){echo "
<p>".
"User ID : ".
$row[0]."
</p>";
echo "<p>".
"Password : ".
$row[1]."</p>";
echo "<p>".
"First Name : ".
$row[2]." Last Name : ".
$row[3]."</p>";
echo "<p>".
"Gender : ".
$row[4]." 
Date of Birth :".
$row[5]."</p>
";echo "
<p>".
"Country : ".
$row[6]." 
User rating : ".$row[7].
"</p>
";
echo "<p>
"."Email ID : ".
$row[8].
"</p>
";
echo "--------------------------------------------";}}elseecho "
Invalid user id or password";?
>
</div>
</div>
</div>
</body>
</html>

Структура таблицы: user_details

«использование

Записи таблицы: user_details

«запись

Если идентификатор пользователя и пароль совпадают с записью в базе данных, будет отображаться личная информация пользователя. В противном случае будет отображаться « Неверный идентификатор пользователя или пароль ».

Теперь введите действительный идентификатор пользователя и пароль в form.html и проверьте результат:

«обеспечить

Выход:

-- Персональные данные --


Идентификатор пользователя: scott123

Пароль: [электронная почта защищена]

Имя: Скотт Фамилия: Рай

Пол: M Дата рождения: 1990-05-15

Страна: США Рейтинг пользователей: 100

Идентификатор электронной почты : [электронная почта защищена]

--------------------------------------------

Позвольте ввести правильный ID пользователя и неверный пароль в form.html и проверить результат:

«обеспечить

Выход :

Неправильное имя пользователя или пароль

Когда подлинный пользователь отправляет свои данные (идентификатор пользователя и пароль), из этих данных генерируется SQL-запрос, который отправляется в базу данных для проверки. Если оба идентификатора пользователя и пароль действительны, пользователю разрешен доступ. При проверке подлинный пользователь получает соответствующий доступ и отображает свои данные, в противном случае он генерирует сообщение об ошибке.

Пример атаки SQL-инъекцией:

Давайте посмотрим на код ( action.php ) приведенного выше примера:

$uid = $_POST['uid'];$pid = $_POST['passid'];$SQL = "select * from user_details where userid ='$uid' and password ='$pid' "; $result = mySQL_query($SQL); 

В приведенном выше коде данные ИД пользователя и пароля, полученные от пользователя, хранятся в $ uid и $ pid. Интерпретатор выполнит команду (которая будет сохранена в $ result) на основе входных данных. Теперь, если злоумышленник предоставит abcd в качестве идентификатора пользователя и что-либо 'или' x '=' x в качестве пароля, запрос будет построен как

$ SQL = "select * from user_details", где userid = 'abcd' и password = 'что-нибудь' или 'x' = 'x' ";

Исходя из приоритета оператора, предложение WHERE верно для каждой строки, поэтому запрос вернет все записи. Таким образом, злоумышленник сможет просмотреть всю личную информацию пользователей. Смотрите следующую форму входа и выход.

«несанкционированное

Выход:

-- Персональные данные --


Идентификатор пользователя: scott123

Пароль: [электронная почта защищена]

Имя: Скотт Фамилия: Рай

Пол: M Дата рождения: 1990-05-15

Страна: США Рейтинг пользователей: 100

Идентификатор электронной почты : [электронная почта защищена]

--------------------------------------------

ID пользователя: ferp6734

Пароль: [электронная почта защищена] & 3

Имя: Палаш Фамилия: Гош

Пол: M Дата рождения: 1987-07-05

Страна: ИНДИЯ Рейтинг пользователей: 75

Идентификатор электронной почты : [электронная почта защищена]

--------------------------------------------

ID пользователя: diana094

Пароль: [электронная почта защищена]

Имя: Диана Фамилия: Лоренц

Пол: F Дата рождения: 1988-09-22

Страна: Германия Рейтинг пользователей: 88

Идентификатор электронной почты : [электронная почта защищена]

--------------------------------------------

Типы SQL-инъекций

- Тавтологический SQL-инъекция

- Запросы с поддержкой со стороны

- Union Query

- Нелегальные / логически некорректные запросы

- вывод

- хранимая процедура впрыска

Тавтологии

Цель :

  • Определите вводимые параметры
  • Обход аутентификации
  • Извлечь данные

В логике тавтология (от греческого слова ταυτολογία) - это формула, которая верна во всех возможных интерпретациях. При атаке на основе тавтологии код вводится с использованием оператора условного ИЛИ, так что запрос всегда оценивается как ИСТИНА. Атаки SQL на основе тавтологии обычно обходят аутентификацию пользователя и извлекают данные, вставляя тавтологию в предложение WHERE SQL-запроса. Запрос преобразует исходное условие в тавтологию, в результате чего все строки в таблице базы данных открыты для неавторизованного пользователя. Типичная тавтология SQL имеет форму «или <выражение сравнения>», где выражение сравнения использует один или несколько реляционных операторов для сравнения операндов и создания всегда истинного условия. Если неавторизованный пользователь вводит идентификатор пользователя как abcd и пароль как что-нибудь »или« x »=« x, то результирующий запрос будет:

 выберите * из user_details, где userid = 'abcd' и пароль = 'что-нибудь' или 'x' = 'x' 

Пример уже объяснен в разделе «Пример атаки SQL-инъекцией».

Запросы с поддержкой Piggy / Инъекция операторов

Цель :

  • Извлечь данные
  • Изменить набор данных
  • Выполнять удаленные команды
  • Отказ в обслуживании

Этот тип атаки отличается от других тем, что хакер вводит дополнительные запросы в исходный запрос, в результате база данных получает несколько запросов SQL. Первый запрос действителен и выполняется нормально, последующие запросы являются внедренными запросами, которые выполняются в дополнение к первому. Из-за неправильной конфигурации система уязвима к запросам с поддержкой и допускает несколько операторов в одном запросе. Пусть злоумышленник вводит abcd как usrerid и '; удалить таблицу xyz - в качестве пароля в форме входа:

«Piggy спинками

Затем приложение сгенерирует следующий запрос:

 выберите * из user_details, где userid = 'abcd' и password = ''; дроп стол xyz - ' 

После завершения первого запроса (вернул пустой набор результатов (т. Е. Ноль строк)), база данных распознает разделитель запроса (";") и выполнит введенный второй запрос. Результатом выполнения второго запроса будет удаление таблицы xyz, которая уничтожит ценную информацию.

Union Query

Цель :

  • Обход аутентификации
  • Извлечь данные

Этот тип атаки может быть выполнен путем вставки запроса UNION в уязвимый параметр, который возвращает набор данных, который представляет собой объединение результата исходного первого запроса и результатов введенного запроса.

Оператор SQL UNION объединяет результаты двух или более запросов и создает набор результатов, который включает извлеченные строки из участвующих запросов в UNION.

Основные правила объединения двух или более запросов с использованием UNION:

1) Количество столбцов и порядок столбцов всех запросов должны быть одинаковыми.

2) Типы данных столбцов для включения таблицы в каждом запросе должны быть одинаковыми или совместимыми.

3) Обычно возвращаемые имена столбцов берутся из первого запроса.

По умолчанию UNION ведет себя как UNION [DISTINCT], то есть устраняет дубликаты строк; однако использование ключевого слова ALL с UNION возвращает все строки, включая дубликаты.

Злоумышленник, пытающийся использовать этот метод, должен хорошо знать схему БД. Давайте попробуем описанный выше метод с двумя таблицами user_details , emp_details и нашей первой формой входа в систему:

Структура таблицы: user_details

«использование

Записи таблицы: user_details

«запись

Структура таблицы: emp_details


Записи таблицы: emp_details

«запись

Предположим, что злоумышленник вводит « UNION SELECT * FROM emp_details» - в поле «Идентификатор пользователя» и « abcd» в поле «Пароль», в качестве имени пользователя и пароля, который генерирует следующий запрос:

SELECT * FROM user_details WHERE userid ='' UNION SELECT * FROM EMP_DETAILS -- ' and password =  'abcd'

Две черточки (-) комментируют остальную часть запроса, то есть 'и пароль =' abcd ' . Следовательно, запрос становится объединением двух запросов SELECT. Первый запрос SELECT возвращает нулевой набор, поскольку в таблице user_details нет соответствующей записи. Второй запрос возвращает все данные из таблицы emp_details . Давайте попробуем это с нашей формой входа.

«союз

Выход :

-- Персональные данные --


ИД пользователя: 100

Пароль: Стивен

Имя: Король Фамилия: СКИНГ

Пол: 515.123.4567 Дата рождения: 1987-06-17

Страна: AD_PRES Рейтинг пользователя: 24000.00

ID электронной почты: 0,00

--------------------------------------------

ИД пользователя: 101

Пароль: Neena

Имя: Кочхар Фамилия: НКОЧХАР

Пол: 515.123.4568 Дата рождения: 1987-06-18

Страна: AD_VP Рейтинг пользователей: 17000.00

ID электронной почты: 0,00

--------------------------------------------

ИД пользователя: 102

Пароль: Лекс

Имя: Де Хаан Фамилия: LDEHAAN

Пол: 515.123.4569 Дата рождения: 1987-06-19

Страна: AD_VP Рейтинг пользователей: 17000.00

ID электронной почты: 0,00

--------------------------------------------

Идентификатор пользователя: 103

Пароль: Александр

Имя: Hunold Фамилия: AHUNOLD

Пол: 590.423.4567 Дата рождения: 1987-06-20

Страна: IT_PROG Рейтинг пользователей: 9000.00

ID электронной почты: 0,00

--------------------------------------------

ИД пользователя: 104

Пароль: Брюс

Имя: Эрнст Фамилия: БЕРНСТ

Пол: 590.423.4568 Дата рождения: 1987-06-21

Страна: IT_PROG Рейтинг пользователей: 6000.00

ID электронной почты: 0,00

--------------------------------------------

ИД пользователя: 105

Пароль: Дэвид

Имя: Остин Фамилия: ДАУСТИН

Пол: 590.423.4569 Дата рождения: 1987-06-22

Страна: IT_PROG Рейтинг пользователей: 4800.00

ID электронной почты: 0,00

--------------------------------------------

Заголовки (например, ID пользователя:, Имя: ect) были ранее объявлены в action.php , но выходные данные показывают, что результат содержит employee_id, first_name, last_name, email, phone_number, hire_date, job_id, salary, commision_pct из таблицы emp_details ,

Нелегальные / логически некорректные запросы

Цель :

  • Определите вводимые параметры
  • Определить базу данных
  • Извлечь данные

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

вывод

Цель :

  • Определите вводимые параметры
  • Определить схему
  • Извлечь данные

В этом типе внедрения атака применяется к хорошо защищенным базам данных, которые не возвращают никаких полезных отзывов или описательных сообщений об ошибках. Атака обычно создается в стиле истинного ложного утверждения. Найдя уязвимый параметр, злоумышленник вводит различные условия (которые он хочет узнать, являются ли они истинными или ложными) посредством запроса и тщательно наблюдает за ситуацией. Если оператор оценивается как true, страница продолжает нормально функционировать. Если false, страница ведет себя значительно отличается от нормально функционирующего. Этот тип инъекции называется слепой инъекцией. Существует еще один тип атаки логического вывода, который называется Time Attack. В этом методе злоумышленник создает условный оператор и внедряет через уязвимый параметр и собирает информацию на основе временных задержек в ответе базы данных. Смотрите следующий код:

 http://www.example.com/product.php?product_id=100 AND IF (версия (), например, «5%», sleep (15), «false»)) - 

Здесь злоумышленник проверяет, использует ли система версию MySQL 5.x или нет, заставляя сервер задерживать ответ на 15 секунд (злоумышленник может увеличить время задержки).

Хранимые процедуры

Цель :

  • Повышение привилегий
  • Отказ в обслуживании
  • Выполнять удаленные команды

Хранимая процедура - это подпрограмма, доступная приложениям, которые обращаются к системе реляционных баз данных. Хранимая процедура фактически сохраняется в словаре данных базы данных. Типичное использование хранимых процедур включает механизмы проверки данных или контроля доступа. Кроме того, хранимые процедуры могут консолидировать и централизовать логику, которая изначально была реализована в приложениях. Обширная или сложная обработка, требующая выполнения нескольких операторов SQL, перемещается в хранимые процедуры, и все приложения вызывают эти процедуры. Можно использовать вложенные хранимые процедуры, выполняя одну хранимую процедуру из другой.
Хранимые процедуры типа SQL-инъекции пытаются выполнить хранимые процедуры, присутствующие в базе данных. Большая часть базы данных имеет стандартный набор процедур (помимо пользовательских процедур), которые расширяют функциональные возможности базы данных и позволяют взаимодействовать с операционной системой. Сначала злоумышленник пытается найти тип базы данных с помощью другого метода внедрения, такого как недопустимые / логически некорректные запросы. Как только злоумышленник определит, какие базы данных используются в бэкэнде, он попытается выполнить различные процедуры с помощью внедренного кода. Поскольку хранимая процедура написана разработчиками, эти процедуры не делают базу данных уязвимой для атак с использованием SQL-инъекций. Хранимые процедуры могут быть уязвимы для выполнения удаленных команд, повышения привилегий, переполнения буфера и даже обеспечения административного доступа к операционной системе.
Если злоумышленник вводит '; SHUTDOWN; - в поля «ИД пользователя» или «Пароль» будет сгенерирован следующий код SQL:

 выберите * из user_details, где userid = 'abcd' и password = ''; НЕИСПРАВНОСТЬ; - ' 

Приведенная выше команда вызывает отключение базы данных.

Альтернативные кодировки

Цель :

  • Обнаружение уклонения

В этом случае злоумышленник вводит закодированный текст, чтобы обойти защитные методы кодирования. Злоумышленники организовали альтернативные методы кодирования через свои введенные строки, такие как использование шестнадцатеричного, ASCII,
и кодировка символов Unicode. Методы сканирования и обнаружения не полностью эффективны против альтернативного кодирования. Смотрите следующий пример:

 ВЫБЕРИТЕ * ОТ ПОЛЬЗОВАТЕЛЕЙ, ГДЕ логин = '' И пароль = ''; exec (char (Ox73687574646j776e)) ' 

В приведенном выше коде используется функция char () и шестнадцатеричное кодирование ASCII. Функция char () возвращает фактические символы шестнадцатеричной кодировки символов. Эта закодированная строка преобразуется в команду выключения базой данных при ее выполнении.

Защита от SQL-инъекций

Исследователи и менеджеры по безопасности предложили различные защитные методы для борьбы с SQL-инъекцией. Основной причиной почти каждого внедрения SQL является неверная проверка ввода. Вот список методов профилактики:

  • Проверка ввода
  • Функции проверки ввода
  • Проверьте источники ввода
  • Права доступа
  • Настройка отчетов об ошибках базы данных

Проверка ввода

- Простая проверка ввода может предотвратить множество атак.
- Всегда проверяйте пользовательский ввод, проверяя тип, размер, длину, формат и диапазон.
- Проверить содержимое строковых переменных и принять только ожидаемые значения.
- Отклонить записи, содержащие двоичные данные, escape-последовательности и т. Д. Это может помочь предотвратить внедрение скрипта и защитить от некоторых эксплойтов переполнения буфера.
- Когда вы работаете с XML-документами, проверяйте все данные по их схеме по мере их ввода.

Функции проверки ввода

- определенные символы и последовательности символов, такие как; , -, select, insert и xp_ могут быть использованы для атаки SQL-инъекцией.
- Удалите эти символы и последовательности символов из пользовательского ввода, что уменьшает вероятность инъекционной атаки.
- Сканирование строки запроса на наличие нежелательных слов, таких как «вставить», «обновить», «удалить», «удалить» и т. Д., Проверить, представляет ли оно оператор или допустимый ввод пользователя.
- Напишите функцию, которая может справиться со всем этим.

Список символов, которые используются для атаки SQL-инъекцией:

Введите символ Значение в SQL
; Разделитель запросов.
' Строка символьных данных.
- Разделитель комментариев.
/ * ... * / Разделители комментариев. Текст между / * и * / не оценивается сервером.
xp_ Используется в начале имени расширенных по каталогу хранимых процедур, таких как xp_cmdshell.

Проверьте источники ввода

- Существует очень много способов атаковать базу данных, поэтому разработчик должен проверять и аутентифицировать все входные источники и запрещать неопознанным или ненадежным пользователям / веб-сайтам.

Права доступа / Права пользователя

- Создание учетных записей с низким уровнем привилегий для использования приложениями.
- Никогда не предоставляйте привилегии уровня экземпляра учетным записям базы данных.
- Никогда не предоставляйте права владельца базы данных или схемы владельцам учетных записей базы данных.
- Будьте в курсе схемы разрешений вашей базы данных.

Настройка отчетов об ошибках базы данных

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

Помимо вышесказанного, есть несколько методов, которые могут предотвратить внедрение SQL.

Ссылка: http://en.wikipedia.org/wiki/SQL_injection

Упражнения по SQL

Хотите улучшить вышеуказанную статью? Вносите свои заметки / комментарии / примеры через Disqus.

Предыдущая: SQL Dual table
Далее: SQL Вопрос Ответ

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code