За последние 24 часа нас посетил 17531 программист и 1718 роботов. Сейчас ищут 1800 программистов ...

Защита от MYSQL иньекций

Тема в разделе "PHP для новичков", создана пользователем Колбася, 11 ноя 2012.

  1. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Код (PHP):
    1. if(isset($_GET['get'])) {
    2.     if((string)$_GET['get']==='str') {
    3.         //code
    4.     } else if((int)$_GET['get']===1) {
    5.         //code
    6.     }
    7. } 
     
  2. [vs]

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

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    всё одно по одному
    Код (Text):
    1. $a = '1abcdef';
    2. echo (1 === (int)$a); //true
     
  3. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Код (Text):
    1. if ( $_GET['get'] === "1" ) $get =1;
    2. if ( $_GET['get'] === "2" ) $get =2;
    3. ..........
    4. if ( $_GET['get'] === "9999" ) $get =9999;
    )))
     
  4. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    В моем случае это не прокатит.
    Все равно узнает какой тип:
    Код (PHP):
    1. //?get=1x
    2.  
    3. if(site::get('get')) {
    4.     
    5. } //true
    6. if(site::get('get',0)) {
    7.     
    8. } //false  
    Немного по другому пошел.
     
  5. [vs]

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

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Между прочим, типа в $_GET может быть всего 2: string и array. Вопрос в том, согласны ли вы изменить символьное представление значения переменной при приведении к int, или нет.

    Добавлено спустя 49 секунд:
    Таким образом, от приведения вы все равно никуда не денетесь.
     
  6. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.108
    Симпатии:
    1.243
    Адрес:
    там-сям
    Помоему вы уже говорите ниочём, сорри!

    Очень хорошая статья в тему на хабре: Защита от SQL-инъекций в PHP и MySQL. Недостаток — длинная как «Война и Мир». Зато развенчивает многие мифы и разъясняет, в частности, как именно работают плейсхолдеры.

    Вывод: «проблема, как это часто бывает, оказывается не в инструменте, а в руках, которые его держат»
     
  7. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Так бывает ВСЕГДА и все это знают. Просто почему-то никто об этом не вспоминает до тех пор пока в лужу не сядет...
     
  8. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ничего не понял
     
  9. [vs]

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

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Это типа пишут код
    Код (Text):
    1. forech ($arr as $f=>$v) {
    2. $query .= "$f = '$v'";
    и ожидают, что в $f буду поля name и password, а юзер добвит туда group и сделает себя админом.
     
  10. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.108
    Симпатии:
    1.243
    Адрес:
    там-сям
    Там в начале статьи тезис: безопасность = плейсхолдеры + белый_список_полей. Это всё про то же, можно брать только те имена, которые мы заранее где-то определили.
     
  11. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    А имена полей-то тоже в кавычках идут. Без кавычек бессмысленно рассматриать эскейп-функцию. И то это не спасает. А вот интвал спасает :)
     
  12. Колбася

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

    С нами с:
    12 дек 2011
    Сообщения:
    722
    Симпатии:
    0
    неслабо у вас popka prigorela
     
  13. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    мне кажется ты живёшь в какой-то параллельной вселенной
     
  14. Колбася

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

    С нами с:
    12 дек 2011
    Сообщения:
    722
    Симпатии:
    0
    :)
     
  15. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.108
    Симпатии:
    1.243
    Адрес:
    там-сям
    поциент пьян
     
  16. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Соблюдайте все проверки и приведения типов, чтобы уже на "Верочку" было =)
    Потому, что php динамичный, а не строгий.