Базы данных: мегабайты удовольствия

Как ломается SQL

Xakep, номер #040, стр. 040-066-4


По моему мнению, так и только так должна выглядеть защита от SQL-injection атак. Остальные методы (например, запрещение только ключевых слов и метасимволов ";" и "'") обходятся достаточно грациозно. Если скрипт отфильтровывает какой-либо символ, то его можно заменить конструкцией +char(0xКОД_СИМВОЛА)+. Теперь конструкция для вывода содержимого БД без использования кавычек будет выглядеть так:

select user from user where char(0x27)+user+char(0x27)=char(0x27)+char(0x27);

что абсолютно эквивалентно вот этой вещи:

select user from user where 'user'='';

Ну, я думаю, для первого раза хватит. Если вдруг тебе мало, то можешь схватить небольшую подборку статей на эту тему у меня на сайте www.voy85.org. После того как переваришь всю полученную информацию, запомни, что базы данных используются в самых желанных местах для взломщиков - SQL встречается в музыкальных архивах, у провайдеров, в онлайн-магазинах, в банках... Дальше список продолжать? Базы данных - это всегда лакомый кусочек, который никто не прочь урвать.

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

Назад на стр. 040-066-3  Содержание