2013-06-28 3 views
0

Я просто взял на себя управление для веб-службы, и сегодня я получил отчет пользователя об этой ошибке. Теперь я не эксперт по внедрению sql-инъекций, но эта ошибка делает эту атаку возможной?Является ли это заявление sql уязвимым?

Microsoft OLE DB Provider for ODBC Drivers error '80040e14' 

[MySQL][ODBC 3.51 Driver][mysqld-4.1.22-community-nt]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '') ORDER BY TCOL_date desc' at line 1 

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

Заранее благодарим за любую помощь.

+0

Где ваш запрос? –

+0

Нет, эта ошибка означает, ** theres ошибка в sql? ** Нам нужно будет увидеть запрос и как он buil и т. Д., Чтобы узнать, есть ли какие-либо проблемы здесь. –

+2

Если вы получаете сообщения об ошибках об фрагментах SQL, вполне возможно, что кому-то удалось отключить команду и вставить свою собственную команду в середине. Это зависит от того, представляет ли промежуточное программное обеспечение текст, сгенерированный пользователем, как часть команды или с помощью заполнителя типа?. Предполагается, что с помощью API-интерфейсов избегайте атаки. Использование пользовательского текста как части команды SQL является небезопасным. – Paul

ответ

0

Короче Не совсем ... но.

Хотя это может предоставить больше информации, чем вам удобно (версия MySQL работает, используемые драйверы и немного о нескольких столбцах), это не приведет вас к атаке так сильно, как показывая всю строку SQL. Кто-то может попытаться ослепить его, чтобы получить больше информации, а тот факт, что он показывает какую-либо информацию, намного хуже для вас с точки зрения того, что злоумышленник пытается проникнуть, чем показывать информацию только в журналах. Обратная связь, даже немного может помочь атаке [er].

Если при попытке вставить различные биты кода в форму, вы можете получить ответ, который печатает ваш собственный контент, который вы вставляете, это гораздо выгоднее для злоумышленника. Тот факт, что это приложение ломается, когда вы вставляете ', заставляет меня поверить, что он не является защищенным, как утверждает программист. Это может также привести к тому, что злоумышленник будет искать еще одну возможность атаки. Если они могут вставить код javascript в форму и отобразить его в профиле, или если они могут ввести код, который выполняется при возврате с сервера, то они могут использовать сервер и использовать его для запуска своих собственных атак.

Проблемы с внедрением SQL возвращаются к реализации [code] и допускают (и слепо обрабатывают) типы форм. Например, если вы могли бы избежать одиночной цитаты \' в вашей текущей ситуации, кто-то мог бы открыть и закрыть инструкцию SQL и, возможно, UNION свою собственную инструкцию при вытягивании запроса. Если они могут закрыть заявление и добавить другое заявление, они могут добавить delete from users where 1=1 или что-то в этом роде. Другой способ может быть, если вы можете ввести <marquee>Test</marquee> и распечатывать прокрутку слова «тест», когда он не находит никаких результатов, тогда вы можете выполнять инъекции, потому что это не удаление кода.

Все это ведет к разрешениям. Разрешения на сервере должны сделать так, чтобы пользователи на передней панели сайта имели доступ к необходимым уровням разрешений. Если они запрашивают только базу данных (SELECT), у них не должно быть доступа к INSERT, UPDATE, DROP TABLES, или DELETE.

+0

Правильно, я собираюсь сообщить о нежелательной информации, по крайней мере, но вы говорите, что она не уязвима для инъекций?Я снова не эксперт, поэтому я просто проверил несколько примеров, если я введу 'или 'a' = 'a' в поле поиска с синтаксисом' get', который я получаю 'около 'a' = 'a%') ORDER По TCOL_date desc'. Я не уверен, что это поможет решить что-либо. –

+0

Попробуйте вставить '' a% '=' a'. Я не говорю, что он вообще не уязвим для SQL-инъекции. Я говорю с этим фрагментом кода, который на самом деле не говорит вам так или иначе. Вот некоторые примеры реальных инъекций. http://www.unixwiz.net/techtips/sql-injection.html –

+0

Правильно, спасибо за разъяснение. Также вставка, которая дала мне «проверить руководство, соответствующее вашей версии сервера MySQL, для правильного синтаксиса для использования рядом с« a% »=« a% »). ORDER BY TCOL_date desc' –