Как подтвердить Внедрение SQL

Индексы являются методом, который системы баз данных используют для быстрого нахождения данных. Аналогия реального мира является индексами в книгах. Если автор/издатель делает хорошее задание при индексации их книги, для читателя становится довольно легко непосредственно перейти к странице, которую они хотят прочитать просто путем рассмотрения индекса. То же идет для базы данных. Если индекс создается на поле, база данных предварительно сортирует данные. Когда запрос выполнен на данных, база данных использует индекс для идентификации, в каком местоположении данные хранятся на жестком диске, и непосредственно идут туда. Если нет никаких индексов, база данных должна посмотреть на каждую запись, чтобы узнать, соответствует ли это критериям Вашего запроса.

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

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

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

9
задан Amarghosh 30 November 2009 в 11:01
поделиться

5 ответов

Здесь нет простого способа , но если у вас включен SQL-сервер, который вы используете для регистрации каждого отдельного оператора sql, вот что я бы сделал.

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

1=1 
0=0

оба используются как:

blahblahblah' or 1=1 --

Вы не должны использовать эти предложения в повседневном коде. Так что, если вы заметили один из них в своей истории, что ж, это хороший кандидат. Проверьте историю sql, чтобы найти:

(space)(number)(optional spaces)(equal)(optional spaces)(same number)(space)

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

7
ответ дан 4 December 2019 в 22:28
поделиться

после того, как атака уже произошла? нет. нет. вам нужно будет проверить всю свою точку доступа sql serevr на предмет потенциального риска. Вот некоторые инструменты, которые вы можете использовать. Проверьте здесь в разделе инструментов внедрения SQL.

1
ответ дан 4 December 2019 в 22:28
поделиться

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


Лучше предотвратить их.

Для этого есть несколько инструментов , но лучший из них. это мозг разработчика.

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

0
ответ дан 4 December 2019 в 22:28
поделиться

Вы можете регистрировать все HTTP-запросы и проверять запрошенные страницы для попыток внедрения SQL-кода GET / POST.

-2
ответ дан 4 December 2019 в 22:28
поделиться

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

В наши дни для IDS есть альтернативы с открытым исходным кодом. Я использую PHPIDS для всех своих приложений PHP.

1
ответ дан 4 December 2019 в 22:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: