За последние 24 часа нас посетили 144786 программистов и 2246 роботов. Сейчас ищет 1221 программист ...

правильный и безопасный синтаксис sql запроса

Тема в разделе "MySQL", создана пользователем yok, 15 мар 2010.

  1. vuzy

    vuzy Активный пользователь

    С нами с:
    11 мар 2010
    Сообщения:
    199
    Симпатии:
    0
    Адрес:
    киев
    внесу ясность:
    lexa, yok'у удобно когда безопасно... он спрашивает о безопасности и не получает ответа.

    Я же говорю что использовать
    PHP:
    1.  
    2. <?
    3. $sql='SELECT * FROM `table` WHERE `id`=' ".mysql_real_escape_string($login)." ';
    4. ?>
    5.  
    или
    PHP:
    1.  
    2. $login=mysql_real_escape_string($login);
    3. $sql='SELECT * FROM `table` WHERE `id`=' ".$login." ';
    4.  
    одно и тоже... Но всетаки возникает вопрос. Почему автор процитированой статьи намекает на то что ее надо использовать непосредственно в запросе?
    Наверное потому что он привел пример с универсальной функцией... когда мы передаем ей значение не один раз и она нам не один раз что то возвращает и невсегда то что надо. так что не ленитесь использовать mysql_escape_string() непосредственно перед вводом данных. Допустим я тоже недоконца понимаю как это отражается на безопасности для меня всеравно что так что иначе будет безопасно если есть резинка(mysql_escape_string()) =))
     
  2. yok

    yok Активный пользователь

    С нами с:
    15 мар 2010
    Сообщения:
    18
    Симпатии:
    0
    Вот, вот, и я о том же, почему именно в запросе рекомендует. Ведь если непосредственно перед запросом обработать $name=mysql_real_escape_string($login);
    и уже в сам запрос передать можно уже даже $name(ниже напишу дополнение)
    SELECT * FROM `table` WHERE `id`=' ".$name." ';
    эта обработка происходит на сервере, и даже имя переменной поменялось, думаю вообще невозможно както повлиять.

    А насчет изменения имени, $name а было $login, просто читал статью о иньекциях, и там запросы подбирались

    http://injection.rulezz.ru/MSSQL-ASP-Injection.html

    по такому принцыпу, искалась таблица по LIKE, и таблица с логином, часто называются близко, log pass ,
     
  3. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Я вообще-то ответил.

    Можно и в самом запросе, но тогда читать его будет несколько хуже, особенно если переменных много.
     
  4. lexa

    lexa Активный пользователь

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Я чё забыл с корейской раскладки переключиться или это топик, в котором спрашивают, но ответы игнорируют?