За последние 24 часа нас посетили 17594 программиста и 1720 роботов. Сейчас ищет 1851 программист ...

SQL-инъекции

Тема в разделе "PHP для новичков", создана пользователем nixx, 28 мар 2013.

  1. nixx

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

    С нами с:
    20 фев 2013
    Сообщения:
    132
    Симпатии:
    0
    Переписал скрипт на PDO .Маловато мануала на русском.Пишут ,что PDO более защищенный способ от инъекций.Надо ли использовать mysql_real_escape_string?
     
  2. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    А, что надо то?
    Код (PHP):
    1. echo preg_replace('/select|union|order|where|char|from/iu','','seLEct бла, бла, FroM бла uNIoN'); 
     
  3. nixx

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

    С нами с:
    20 фев 2013
    Сообщения:
    132
    Симпатии:
    0
    Надо ли использовать mysql_real_escape_string в PDO или этот функционал там уже заложен?
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    смотря как вы используете PDO :D
    как по-вашему он отделит хорошие слова от плохих таких же слов? есть способы...
     
  5. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Если используете PDO::prepare не нужно ничего экранировать.
    Если же используете PDO::query, для этого есть PDO::quote, для правильного экранирования.
    Смотря какая задача.
     
  6. nixx

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

    С нами с:
    20 фев 2013
    Сообщения:
    132
    Симпатии:
    0
    Например запрос
    Код (Text):
    1. $result = $db->query("INSERT INTO page (title,text,date_time) VALUES ('$title_post','$text_post',now())");
    тогда лучше записывать примерно так и
    ?
    Код (Text):
    1. $result = $db->prepare("INSERT INTO page (title,text,date_time) VALUES ('$title_post','$text_post',now())");
    2.  $res = $result->execute();
     
  7. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Нет, нужно не так писать.
    Ну прочитайте же вы мануал... Там же показано как нужно и написано.
     
  8. nixx

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

    С нами с:
    20 фев 2013
    Сообщения:
    132
    Симпатии:
    0
    Всего один день PDO изучаю,так что пока толком невъезжаю.
     
  9. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    И какой тогда вообще смысл от prepare ?
     
  10. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    чтобы управляющие слова не пролезали из пользовательского ввода в запрос, надо их прятать в кавычки.
    чтобы кавычки из пользовательского ввода не вылезали из твоих кавычек - надо их экранировать.
    это ясно?