Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CSPDB-Lab3-2012.doc
Скачиваний:
12
Добавлен:
15.04.2015
Размер:
258.05 Кб
Скачать

Insert into Товары ([Код товара], Наименование, Цена,

Производитель)

Values(12, 'Кастрюля', 250, '');

DROP TABLE TableToDrop;-- ')

Видим, что он включает SQL-запрос на добавление записи, SQL-запрос на удаление таблицы и комментарий, который позволяет сделать конструкцию синтаксически правильной, закомментировав символы « ') ».

В результате выполнения приложения в таблицу Товары будет добавлена новая строка, а таблица TableToDrop будет удалена.

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

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

7. Добавьте следующий код для кнопки "Безопасно":

string Query = "INSERT INTO Товары ([Код товара],

Наименование,Цена,Производитель)

VALUES("

+"@GoodsCode, @GoodsName,

@GoodsPrice, @GoodsMadeIn)";

SqlConnection con = new SqlConnection(

"Data Source=srv\\sql_srv;"+

"Initial Catalog=Supply;"+

"User ID=sa;"+

"Password=sa;");

SqlCommand cmd = con.CreateCommand();

cmd.CommandText = Query;

cmd.Parameters.AddWithValue("@GoodsCode",

TextGoodsCode.Text);

cmd.Parameters.AddWithValue("@GoodsName",

TextGoodsName.Text);

cmd.Parameters.AddWithValue("@GoodsPrice",

TextGoodsPrice.Text);

cmd.Parameters.AddWithValue("@GoodsMadeIn",

TextGoodsMadeIn.Text);

con.Open();

cmd.ExecuteNonQuery();

con.Close();

Для добавления параметров в данном примере используется метод AddWithValue(), в котором указывается имя параметра и его значение.

8. Заново создайте таблицу TableToDrop и повторите предыдущий эксперимент, нажав при этом на кнопку "Безопасно". При этом таблица не будет удалена, а в поле Производитель добавленной записи появится текст:

'); DROP TABLE TableToDrop;--

Таким образом, при использовании параметров в запросе, любая последовательность символов рассматривается как строковая константа и не может стать SQL-инъекцией.

Важно! Не вздумайте проводить подобные эксперименты над чужими информационными системами. Помните, что за несанкционированный неправомерный доступ к компьютерной информации следует уголовная ответственность по статье 272 УК РФ.

Статья 272. Неправомерный доступ к компьютерной информации

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

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

2. То же деяние, причинившее крупный ущерб или совершенное из корыстной заинтересованности, -

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

3. Деяния, предусмотренные частями первой или второй настоящей статьи, совершенные группой лиц по предварительному сговору или организованной группой либо лицом с использованием своего служебного положения, -

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

4. Деяния, предусмотренные частями первой, второй или третьей настоящей статьи, если они повлекли тяжкие последствия или создали угрозу их наступления, -

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

Примечания.

1. Под компьютерной информацией понимаются сведения (сообщения, данные), представленные в форме электрических сигналов, независимо от средств их хранения, обработки и передачи.

2. Крупным ущербом в статьях настоящей главы признается ущерб, сумма которого превышает один миллион рублей.

Задание

В соответствии с вариантом задания разработать клиентские приложения, выполняющие запросы к БД. Допустимо реализовать все задания в виде одного приложения, создав вкладки: по одной для каждого пункта задания.

Задания 1‑3 должны использовать статические запросы и методы класса SqlCommand: ExecuteNonQuery(), ExecuteScalar() и ExecuteReader(), соответственно. Задание 4 должно выполняться с использованием параметрического запроса, а задание 5 – с помощью динамического. Для динамического запроса разработать SQL-инъекцию, демонстрирующую уязвимость данного способа.

Вариант 1

1. Создать приложение, позволяющее уменьшить на 50% цену для товаров, которые поставляются в количестве менее 200 штук.

2. Создать приложение, позволяющее вывести минимальную цену товара.

3. Создать приложение, позволяющее просматривать информацию о товарах.

4. Создать приложение, позволяющее просматривать информацию о поставках товаров. В качестве параметров указать наименование товара и наименование поставщика.

5. Создать приложение, позволяющее добавлять информацию о новом товаре.

Вариант 2

1. Создать приложение, позволяющее уменьшить на 20% цену на все сеансы в кинотеатрах, для которых количество показов кинофильмов менее 3.

2. Создать приложение, позволяющее вывести количество существующих кинотеатров.

3. Создать приложение, позволяющее просматривать информацию о кинотеатрах.

4. Создать приложение, позволяющее просматривать информацию о сеансах. В качестве параметров указать название кинотеатра и название кинофильма.

5. Создать приложение, позволяющее добавлять информацию о новом кинотеатре.

Вариант 3

1. Создать приложение, позволяющее уменьшить на 20% сумму выплаты для врачей, которые принимают менее 2 пациентов.

2. Создать приложение, позволяющее вывести максимальный номер кабинета.

3. Создать приложение, позволяющее просматривать информацию о врачах.

4. Создать приложение, позволяющее просматривать информацию о талонах. В качестве параметров указать фамилию врача и фамилию пациента.

5. Создать приложение, позволяющее добавлять информацию о новом враче.

Вариант 4

1. Создать приложение, позволяющее увеличить на 20% стоимость заказов, выполняемых мастером с самым большим стажем.

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

3. Создать приложение, позволяющее просматривать информацию о мастерах.

4. Создать приложение, позволяющее просматривать информацию о заказах. В качестве параметров указать фамилию мастера и марку автомобиля.

5. Создать приложение, позволяющее добавлять информацию о мастерах.

Вариант 5

1. Создать приложение, позволяющее увеличить на 5% стоимость проектов, выполняемых сотрудником с наибольшим стажем.

2. Создать приложение, позволяющее вывести минимальную стоимость проекта.

3. Создать приложение, позволяющее просматривать информацию о сотрудниках.

4. Создать приложение, позволяющее просматривать информацию об участии сотрудников в проектах. В качестве параметров указать фамилию сотрудника и название проекта.

5. Создать приложение, позволяющее добавлять информацию о новом сотруднике.

Вариант 6

1. Создать приложение, позволяющее увеличить на 10 штук количество экземпляров для книг, которые были выданы более 4 раз.

2. Создать приложение, позволяющее вывести максимальный штраф за утерю книги.

3. Создать приложение, позволяющее просматривать информацию об абонентах.

4. Создать приложение, позволяющее просматривать информацию о выдаче книг. В качестве параметров указать фамилию абонента и название книги.

5. Создать приложение, позволяющее добавлять информацию о новом абоненте.

Вариант 7

1. Создать приложение, позволяющее увеличить на 5% значение стоимости для трав, сданных в количестве менее 3 кг.

2. Создать приложение, позволяющее вывести общее количество существующих лекарственных трав.

3. Создать приложение, позволяющее просматривать информацию о травах.

4. Создать приложение, позволяющее просматривать информацию о сборе трав. В качестве параметров указать фамилию сборщика и название травы.

5. Создать приложение, позволяющее добавлять информацию о новой траве.

Вариант 8

1. Создать приложение, позволяющее добавить фразу «ПОСЕЩАЕМЫЙ» в поле Направление деятельности для клубов с количеством членов больше 3 человек.

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

3. Создать приложение, позволяющее просматривать информацию о студентах.

4. Создать приложение, позволяющее просматривать информацию о членстве студентов в клубах. В качестве параметров указать фамилию студента и название клуба.

5. Создать приложение, позволяющее добавлять информацию о новом студенте.

Вариант 9

1. Создать приложение, позволяющее увеличить на 1 число национальных заповедников для стран, в которых занесено в красную книгу больше 2 животных.

2. Создать приложение, позволяющее вывести максимальный вес животного.

3. Создать приложение, позволяющее просматривать информацию о странах.

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

5. Создать приложение, позволяющее добавлять информацию о новой стране.

Вариант 10

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

2. Создать приложение, позволяющее вывести минимальное количество жителей в стране.

3. Создать приложение, позволяющее просматривать информацию о странах.

4. Создать приложение, позволяющее просматривать информацию о запасах ресурсов. В качестве параметров указать название материка и название ресурса.

5. Создать приложение, позволяющее добавлять информацию о новой стране.

Контрольные вопросы.

1. Поясните назначение и назовите основные свойства класса SqlCommand.

2. Перечислите основные типы запросов.

3. Перечислите основные методы класса SqlCommand.

4. Поясните назначение статических запросов.

5. Поясните назначение параметрических запросов.

6. Поясните назначение динамических запросов.

7. Как задаются параметры в параметрических запросах?

8. В чем состоит опасность использования динамических запросов?

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]