За последние 24 часа нас посетили 19374 программиста и 1580 роботов. Сейчас ищут 918 программистов ...

escape_string VS real_escape_string VS addslashes VS quotes

Тема в разделе "Прочее", создана пользователем Ensiferum, 7 фев 2011.

  1. Костян

    Костян Активный пользователь

    С нами с:
    12 ноя 2009
    Сообщения:
    1.724
    Симпатии:
    1
    Адрес:
    адуктО
  2. Devzirom

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

    С нами с:
    15 фев 2009
    Сообщения:
    463
    Симпатии:
    0
    Адрес:
    Пермь
    PHP:
    1. <?php
    2. header('Content-Type: text/plain');
    3.  
    4. if(isset($_POST['param']))
    5.     var_dump($_POST['param']);
    6. //string(0) ""
    7.  
    8. $str1 = "";
    9. $str2 = NULL;
    10.  
    11. var_dump($str1, $str2);
    12. //string(0) ""
    13. //NULL
    14. var_dump(empty($str1) == empty($str2));
    15. //bool(true)
    16. var_dump(is_null($str1) == is_null($str2));
    17. //bool(false)
    18. ?>
    Дак что правильнее, empty или is_null?
     
  3. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Это string
     
  4. antonn

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

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    Elkaz
    ты вернул строку?
     
  5. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    В общем-то спорить безполезно, потому что нужно читать внимательно.
    addslashes обрабатывает только нуль-байт, двойные и одинарные кавычки, и собственно сам бекслеш. ВСЁ.

    real_escape_string (причём учтите, ни в MySQLi, ни в PDO нету обычной escape_string - только real_escape_string, а в PDO идёт quote, которая использует нужную функцию из драйвера. В mysqlnd только real_escape_string и есть.) кодирует не только эти символы, но и некоторые дополнительные последовательности, а так же правильно понимает данные с учётом текущей кодировки. А данные в UTF-8 и windows-1251 разнятся в кодах прилично. Что в одном случае безобидная буква, в другом может оказаться кодом символа, который нужно кодировать.
    Так же обратите внимание на формулировку - real_escape_string не добавляет слешей, она _кодирует_ спец символы, для безопастной вставки в базу. А это фундаментальная разница.
     
  6. Костян

    Костян Активный пользователь

    С нами с:
    12 ноя 2009
    Сообщения:
    1.724
    Симпатии:
    1
    Адрес:
    адуктО
    да, верно, дело даже не в безопасности, а в адекватности процесса "положили в базу такое - выбираем и получаем такое же"
     
  7. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Гонишь.

    Все ваши проблемы решаются просто. Надо отказаться от базы и юзать файлы. БД - ЗЛО!!! Ацкое зло. Юзайте файлы и будет вам счастье.
     
  8. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Эээ, мужик, а БД - это те же файлы.
    Так что мы и юзаем файлы под управлением.
     
  9. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    БД - это магия. Какие файлы?! А если у меня табличка в памяти? Причём тут файлы?!
    Под каким ещё управлением. Пресловутый SQL? Да настоящие папы юзают чистые файлы без всякой SQL-магии.
     
  10. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
  11. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    В файлах тоже должны быть символы, разделяющие данные! Все равно эскейпить придется! ;))
     
  12. antonn

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

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    у меня на файлах вначале была "виндовс" :) хранился уже парсеный html :))
     
  13. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Люто плюсую :DDD
     
  14. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Вот именно, и причем тут мать вашу файлы?
     
  15. Gromo

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

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    при чём тут
    ?
     
  16. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Тролля заказывали?! Заказывали. Вот и не нойте.

    =)
     
  17. Gromo

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

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    тролля заказывали :)

    А вообще возможно проскочить SQL-injection при использовании кодировки utf-8 ?
    например, для экранирования данных, идущих в postgresql я использую addslashes.
    могут ли сайту передаться данные в юникоде-16, когда сайт написан на ютф-8 ?

    Ах, да, Пы.Сы. причём тут мать вашу файлы?!
     
  18. Ensiferum

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

    С нами с:
    11 июл 2010
    Сообщения:
    1.292
    Симпатии:
    0
    Адрес:
    из секты поклонников Нео
    я худею... o_O
     
  19. Апельсин

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

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    your bunny wrote!
     
  20. antonn

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

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    Да я ваще не понимаю как в тему о сиськах прорвались эти иньекции!
     
  21. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
  22. admyx

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

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    Psih
    Аминь