Долбим SQL’ные базы данных

maravan

Xakep, номер #056, стр. 056-058-5


1) MS SQL

sysobjects

syscolumns

2) MySQL

mysql.user

mysql.host

mysql.db

3) Oracle

SYS.USER_OBJECTS

SYS.USER_TABLES

SYS.USER_VIEWS

SYS.USER_TAB_COLUMNS

SYS.TAB

SYS.ALL_TABLES

Защита от подобного

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

1) Кавычки.

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

2) Точка с запятой.

Она разделяет запросы (не во всех sql-серверах; mysql, например, этого не поддерживает). Ее наличие может привести к добавлению левых команд в SQL-запрос.

Также стоит проверять и другие символы, например, подчеркивание (_), знак процента (%), звездочка (*). Все они могут привести к нежелательным последствиям, поэтому очень важно отфильтровывать лишние данные.

Заключение

Нельзя сказать, что тема атак класса SQL Injection полностью рассмотрена. Каждая реализация SQL-сервера имеет свои особенности, которые потенциальный взломщик может использовать себе на благо. Естественно, для этого надо хорошо разбираться в том или ином диалекте языка SQL. Но самых популярных серверов на сегодняшний день всего несколько: MySQL, Postgres, MS SQL, Oracle. Для их защиты, особенно в случае с MySQL и Postgres, не требуется больших усилий. Главное грамотно проверять входящие данные. Это как минимум спасет твой сайт от утечки данных через скрипты. Так что помни об этом. Удачи!

Доки для чтения

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

http://www.mysql.com

http://www.postgresql.org

http://otn.oracle.com/tech/pl_sql/content.html

Назад на стр. 056-058-4  Содержание