Вопрос. Перехват sql injection.

Тема в разделе "PHP", создана пользователем hofa, 25 мар 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. hofa

    hofa Создатель

    Регистр.:
    28 май 2008
    Сообщения:
    39
    Симпатии:
    24
    Здравствуйте, уважаемые.

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

    Заранее огромное Вам спасибо.
     
  2. Arqin

    Arqin

    Регистр.:
    17 мар 2009
    Сообщения:
    185
    Симпатии:
    37
    Как вариант проверять вводимые пользователем данные на присутствие SQL команд. Например с помощью регулярки какой-нить.
     
  3. hofa

    hofa Создатель

    Регистр.:
    28 май 2008
    Сообщения:
    39
    Симпатии:
    24
    Может существует какой то класс, который позволяет решать эту задачу?
     
  4. studentpm

    studentpm

    Регистр.:
    8 ноя 2006
    Сообщения:
    184
    Симпатии:
    132
    Как вариант обрабатывать все ошибочные sql запросы.
     
  5. NoN

    NoN Постоялец

    Регистр.:
    25 ноя 2008
    Сообщения:
    79
    Симпатии:
    33
    Пошарь в Class: class_sql_inject, сам не юзал но в инфе написано "Detect attempts to perform SQL injection attacks"
    http://phpclasses.segmenta.ru/browse/package/1341.html
     
  6. virtualbrest

    virtualbrest

    Регистр.:
    6 май 2007
    Сообщения:
    210
    Симпатии:
    18
    Имхо, лучше всего не искать в запросах что-то плохое, а удалять это плохое, хотя конечно против всякого лома есть свой прием, но от основного защититься можно. Пиши программу и думай, как ее можно взломать, тогда поймешь что надо что бы усложнить таким товарищам задачу.
     
  7. SiMM

    SiMM Создатель

    Регистр.:
    8 фев 2009
    Сообщения:
    41
    Симпатии:
    6
    Нет никаких SQL-инъекций, есть неправильно составленные SQL-запросы. Соответственно перехватывать то, чего нет, не имеет никакого смысла - нужно правильно составлять SQL-запросы.
     
  8. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    590
    Только не рассказывай об этом никому.
     
  9. WuZi

    WuZi Постоялец

    Регистр.:
    2 окт 2008
    Сообщения:
    96
    Симпатии:
    37
    Интересно написал =) И абсолютно неверно. sql инъекция - это внедрение своего sql кода в запрос с целью получения или добавления определенной информации с\в базы данных. Если sql запрос неправильно составлен - то субд вернет ошибку и никакой информации взломщик не получит. А сама возможность проведения sql инъекций существует из-за недостаточной фильтрации входящих переменных в скрипте (субд вообще ни причем - она выполняет тот запрос, который ей передает скрипт).

    По сабжу: зачем такой изврат ? Лучше обезопасить свой скрипт от возможностей проведения инъекций, чем ловить взломщиков ... но все же если очень хочется, то нужно парсить входящие данные на предмет `служебных` слов sql, вроде:

    и\или некоторых функций

    и др.
     
  10. lexeralfer

    lexeralfer Создатель

    Регистр.:
    2 дек 2007
    Сообщения:
    13
    Симпатии:
    0
    что то типа такого
    if( isset($_GET['union']) { die('Hacking attempt ^_^ '); }

    или же как вариант парсить access логи, на запросы
     
Статус темы:
Закрыта.