mysql_real_escape_string

Discussion in 'Песочница' started by Pirotexnik, 13 Dec 2011.

Thread Status:
Not open for further replies.
  1. Pirotexnik

    Pirotexnik Member

    Joined:
    13 Oct 2010
    Messages:
    376
    Likes Received:
    73
    Reputations:
    38
    Expl0ited, спасибо, очень подробно и доступно описано!
    Но у меня вопрос, отдельно is_numeric() как-то обойти возможно? Если использовать хекс?
    Тоесть как минимум нужно написать unhex(), а это уже не число.
     
  2. Expl0ited

    Expl0ited Members of Antichat

    Joined:
    16 Jul 2010
    Messages:
    1,035
    Likes Received:
    534
    Reputations:
    935
    Больше нет, чем да.
     
    _________________________
  3. Pirotexnik

    Pirotexnik Member

    Joined:
    13 Oct 2010
    Messages:
    376
    Likes Received:
    73
    Reputations:
    38
    Мм, а не подскажете, как нащет стринговых запросов?
    Как защищаются от инъекций в них, и как проводят?
     
  4. Expl0ited

    Expl0ited Members of Antichat

    Joined:
    16 Jul 2010
    Messages:
    1,035
    Likes Received:
    534
    Reputations:
    935
    Всё это можно найти здесь: http://forum.antichat.ru/thread43966.html
    В большинстве случаев достаточно фильтровать кавычки.
     
    _________________________
  5. KolosJey

    KolosJey Member

    Joined:
    21 Dec 2009
    Messages:
    45
    Likes Received:
    42
    Reputations:
    48
    Ни в коем случае ненадо ничего фильтровать :)

    Нужно грамотно работать с типами данных.
    (int) intval() is_numeric() для числовых
    mysql_real_escape_string() для строковых

    Всё.

    PS Только не нужно мне показывать intval в условиях и кривые реализации в коде. Я всё это знаю.
    Если один раз прочитать мануалы к 3-м функциям и делать правильно, скулей не будет )
     
  6. Konqi

    Konqi Green member

    Joined:
    24 Jun 2009
    Messages:
    2,251
    Likes Received:
    1,149
    Reputations:
    886
    KolosJey

    Expl0ited именно эти функции имел ввиду, так как вопрос был следующим

    "а не подскажете, как нащет стринговых запросов?"
     
    _________________________
    #26 Konqi, 20 Dec 2011
    Last edited: 20 Dec 2011
  7. KolosJey

    KolosJey Member

    Joined:
    21 Dec 2009
    Messages:
    45
    Likes Received:
    42
    Reputations:
    48
    Konqi
    "Фильтрация кавычек" подразумевает именно фильтрацию. Возможно я что то не так понял, но для меня совершенно однозначно понятие "фильтрация" не вяжется с функцией mysql_real_escape_string. Она ничего не фильтрует.
    И если я так понял пост Expl0ited'а, то думаю кто то запросто мог его понять так-же.
     
    #27 KolosJey, 20 Dec 2011
    Last edited: 20 Dec 2011
  8. Konqi

    Konqi Green member

    Joined:
    24 Jun 2009
    Messages:
    2,251
    Likes Received:
    1,149
    Reputations:
    886
    KolosJey

    в случий стринговых запросов (входящие данные типа стринг), думаю ни один разумный кодер не будет фильтрировать запрос через регулярку или вхождение в строке, понятно же что самый оптимальный и правильный вариант это экранирование ковычек
     
    _________________________
    #28 Konqi, 20 Dec 2011
    Last edited: 20 Dec 2011
  9. Expl0ited

    Expl0ited Members of Antichat

    Joined:
    16 Jul 2010
    Messages:
    1,035
    Likes Received:
    534
    Reputations:
    935
    Те же грабли только в профиль.
    В моем посте имелось ввиду, обработать входящие данные, в соответствии их типу различными функциями. Самый надежный способ:
    PHP:
    <?php
    ...
    # string
    $query sprintf("SELECT * FROM table WHERE text='%s' LIMIT 1"mysql_real_escape_string($_GET['text']));
    ...
    # integer
    $query sprintf("SELECT * FROM table WHERE id='%s' LIMIT 1", (int)$_GET['id']);
    ...
    ?>
    И вообще, мы далеко ушли от темы, автор темы получил желаемый ответ. За сим тему закрываю.
     
    _________________________
    #29 Expl0ited, 20 Dec 2011
    Last edited: 20 Dec 2011
Thread Status:
Not open for further replies.