За последние 24 часа нас посетил 26461 программист и 1814 роботов. Сейчас ищут 1006 программистов ...

Костыль или нет=)

Тема в разделе "Беседы", создана пользователем Qumo, 9 фев 2016.

  1. Qumo

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

    С нами с:
    6 июн 2013
    Сообщения:
    160
    Симпатии:
    0
    Возвращает ассоциативный массив. Я думаю, что нужно, не?=)
     
  2. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    это я у тебя спрашиваю нужно ли
     
  3. Qumo

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

    С нами с:
    6 июн 2013
    Сообщения:
    160
    Симпатии:
    0
    Ну так то mysqli_fetch_assoc уже возвращает ассоциативный массив, значит нет.
     
  4. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    это не приведение к типу. вот приведение к типу $i = (int)"0";

    от html injection

    больше читай, и сформируешь своё мнение, и сможешь даже объяснить, чем кто плох.
     
  5. Qumo

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

    С нами с:
    6 июн 2013
    Сообщения:
    160
    Симпатии:
    0
    Нет, я понимаю, что те функции не приводят к типу=) Насчет того, что такое приведение к типу, я знаю=)) А приведение к типу защищает хоть чуть-чуть от SQL инъекции?
     
  6. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    а ты вообще понимаешь, что такое эта инъекция?
     
  7. Qumo

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

    С нами с:
    6 июн 2013
    Сообщения:
    160
    Симпатии:
    0
    Подмена SQL-запроса
     
  8. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    а почему же тогда инъекция?
     
  9. Qumo

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

    С нами с:
    6 июн 2013
    Сообщения:
    160
    Симпатии:
    0
    Потому что код чужой внедряет=)

    Добавлено спустя 4 минуты 5 секунд:
    Вот например, такой код уязвим?
    Код (PHP):
    1. $result = mysqli_query($db, "SELECT * FROM `page` ORDER BY `position`") or die(mysqli_error($db));
    2.                 while($row = mysqli_fetch_assoc($result)){
    3.                     if ($row['show'] != 1){
    4.                         $i = (int)$row['id'];
    5.                         echo '<li id='.$row['id'].' class="menu__item">[url="'.htmlspecialchars($row['url']).'?lang='.htmlspecialchars($_GET['lang']).'&id='.$row['id'].' class="]'.htmlspecialchars($lang[$i]['menu']).'[/url]</li>';
    6.                     }
    7.                 }
     
  10. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    я спросил почему же называется инъекцией, если оно подменяет? просто оно не подменяет запрос, а вставляет свой.

    ну и вот приведение к типу может ли спасити?

    Добавлено спустя 1 минуту 21 секунду:
    ну одним прекрасным днём кто-то и через id протащит html. Ты и там должен защититься.
     
  11. Qumo

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

    С нами с:
    6 июн 2013
    Сообщения:
    160
    Симпатии:
    0
    т.е. к ид тоже нужно htmlspecialchars()?
     
  12. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    ну если у тебя айди строковый и получаемый от пользователя - да.
     
  13. Qumo

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

    С нами с:
    6 июн 2013
    Сообщения:
    160
    Симпатии:
    0
    В БД у id тип int.
     
  14. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    а может быть и нет. В данном случае тут нет дырки под инъекцию, но это не значит, что из бд всегда будет приходить инт в айдишнике. =)
     
  15. Qumo

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

    С нами с:
    6 июн 2013
    Сообщения:
    160
    Симпатии:
    0
    А при выборки данных из БД, БД независимо от того, какой тип данных у нее там, отдает все как тип string? Или же БД отдает именно тот тип, который у нее указан?
     
  16. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    в текстовом режиме обмена - всегда строки. в бинарном - с некоторым подобием сохранения типа.
     
  17. Qumo

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

    С нами с:
    6 июн 2013
    Сообщения:
    160
    Симпатии:
    0
    А еще такой вопрос, я тут не экранировал двойные кавычки. Нужно ли их вообще экранировать, если echo с одинарными кавычками?
    И как делать лучше инклуд, с двойными или одинарными кавычками?
    типа так: include "db.php"; или вот так: include 'db.php'; ?
     
  18. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    а какая в пхп разница между строками в одинарных кавычках и двойных?
     
  19. Qumo

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

    С нами с:
    6 июн 2013
    Сообщения:
    160
    Симпатии:
    0
    Где-то читал, что если указывать переменную в двойных кавычках, то php будет парсить всю строку на наличие переменных, что займет время, а в одинарных будет кавычках выводит всё как есть. Так ли это? И все же еще непонятно, нужно ли экранировать двойные кавычки? В браузере в отладке это будет видно ведь, не?
     
  20. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    ну так в мануале написано. ах да, тыж у нас из тех кто мануалы не читает. где-то читал... а на заборе знаешь что может быть написано?

    если ты сомневаешься в достоверности информации которую прочитал на заборе - всегда можно уточнить у официального источника. или тебя забанили на офсайте пхп?

    как относится одинарность-двойность кавычек в процедуре подключения файлов к тому что происходит в браузере? браузер не видит пхп. он видит только результат выполнения скрипта.
     
  21. Qumo

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

    С нами с:
    6 июн 2013
    Сообщения:
    160
    Симпатии:
    0
    Тут я имел ввиду экранирование. Вот сделал я экранирование двойных кавычек, у меня это экранирование видно в отладке в браузере. Ведь так не должно быть.
     
  22. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    где ты экранировал двойные кавычки? покажи исходник пхп и исходник страницы в браузере
     
  23. Qumo

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

    С нами с:
    6 июн 2013
    Сообщения:
    160
    Симпатии:
    0
    Да я уже разобрался=) Просто я зря добавлял двойные кавычки, которые автоматически добавлялись, и получался вывод этих кавычек и обратного слеша в отладке в браузере, а одинарные я не экранировал, хотя надо бы=)