вторник, 3 февраля 2009 г.

Как защититься от sql injection

Думаю, самые любопытные тестеры (тоесть, настоящие тестеры) после прочтения предыдущего поста об sql injection задали себе вопрос "А как же защититься от sql injection ?"

Хотя над этим вопросом должны ломать голову не тестеры, а программисты, но тестерам, думаю, эта информация тоже будет полезной. Как минимум, ею можно поделиться с программистами. Ведь тестеры и программисты - друзья! Правда ?! :)

Так вот, существуют три простые правила, как защититься от sql injection:
  • Самое главное - фильтровать кавычки.
  • Если используется оператор сравнения строк LIKE фильтровать знаки “%” и “_”
  • Не использовать при сравнении переменных без кавычек типа select …where id=$id а использовать так select ...where id='$id' и обратиться к пункту 1
Вот как, оказывается, все просто.
Но опыт показывает, что именно в тех местах, где программистам все кажется очень простым, как раз и сидят самые жирные, упитанные, веселенькие баги :)

1 комментарий:

  1. >> Самое главное - фильтровать кавычки.
    не согласен! наиболее правильный подход - это приведение типов там, где это возможно и повсеместное использование регулярных выражений. безусловно, помимо этого фильтрацию входящего потока от спец символов типа null-byte, одинарных и двойных кавычек, делать также нужно.

    ОтветитьУдалить