За последние 24 часа нас посетили 27885 программистов и 1488 роботов. Сейчас ищут 1182 программиста ...

Хотел узнать о PDO зашита уязвимости

Тема в разделе "PHP для новичков", создана пользователем engine.energy, 11 июл 2015.

  1. engine.energy

    engine.energy Новичок

    С нами с:
    31 май 2015
    Сообщения:
    149
    Симпатии:
    0
    Хотел узнать ли входит PDO зашита xss и sql-инфекции?

    Или надо самому писать зашита уязвимости?
     
  2. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    В PDO данные проверяются и зачастую этого хватает. Но, всё же, идеала не бывает. В некоторых случаях всё равно нужно самому проверять данные.
     
  3. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    От XSS - нет, это и не его задача. От SQL-инъекций - если пользовать плейсхолдеры. Для защиты от xss данные, полученные от пользователя, надо выводить через htmlspecialchars
     
  4. engine.energy

    engine.energy Новичок

    С нами с:
    31 май 2015
    Сообщения:
    149
    Симпатии:
    0
    Спасибо. Значит писать свою зашиту =) Пошел писать свой муторный код =)
     
  5. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    т.е. в PDO нет аналога real_escape_string?
     
  6. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
  7. engine.energy

    engine.energy Новичок

    С нами с:
    31 май 2015
    Сообщения:
    149
    Симпатии:
    0
    А такой не сломает? А то раньше не занимал о зашите сайта =) В гугл много хлама и не хочет читать! А насчет статейка спс немного узнал!

    Код (PHP):
    1. if (isset($_POST['send'])) {
    2.             $text = (string)$_POST['text'];
    3.  
    4.             try {
    5.                 if(!$text) {
    6.                     throw new \Exception('Сообщение пусто');
    7.                 }
    8.  
    9.                 $res = Db::me()->prepare("INSERT INTO chat (user_id, text) VALUES (?, ?)");
    10.                 $res->execute(Array(Auth::GetUser()->id, $text));
    11.                 $response->page->message->addSuccess('Сообщение успешно отправлено');
    12.             } catch (\Exception $e) {
    13.                 $response->page->message->addError($e->getMessage());
    14.             }
    15.         }
    А это вывод^
    Код (PHP):
    1. $q = Db::me()->query("SELECT * FROM chat ORDER BY id DESC LIMIT 10");
    2.  
    3.         if ($arr = $q->fetchAll()) {
    4.             foreach ($arr AS $message) {
    5.                 $user = new User\Model($message['user_id']);
    6.                 $widget->items[] = $post = Page\Content\Widget\Item::newPost()->SetTitle($user->login);
    7.                 $post->items[] = $html = Page\Content\Item::newHtml();
    8.                 $html->text = $message['text'];
    9.             }
    10.         } else {
    11.             $widget->items[] = $post = Page\Content\Widget\Item::newPost()->SetTitle('Сообщения отсутствуют');
    12.         } 
     
  8. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    Есть, но не рекомендован к использованию. https://secure.php.net/manual/en/pdo.quote.php