Долбим 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://otn.oracle.com/tech/pl_sql/content.html