За последние 24 часа нас посетили 16830 программистов и 1618 роботов. Сейчас ищет 1561 программист ...

SQL иньекция или xss

Тема в разделе "PHP для новичков", создана пользователем Андрей12, 30 авг 2015.

  1. Андрей12

    Андрей12 Новичок

    С нами с:
    18 фев 2015
    Сообщения:
    131
    Симпатии:
    0
    Код (PHP):
    1. (
    2.  
    3. $stenaid = intval($_POST['stenaid']);
    4. '$stenaid', '".$_SESSION['id']."', '".$_SESSION['login']."', '".time()."', '$message')") or die(mysql_error());
    Как должно быть правильнее?
    Защита должна быть,подскажите что нужно сделать=)?

    PHP, JavaScript, SQL и другой код пишите внутри тегов
    Код ( (Unknown Language)):
    1. [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
     
  2. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.589
    Симпатии:
    1.763
    Кривой код
    1. Не пользоваться mysql, использовать mysqli или PDO
    2. Введённые данные преимущественно вставлять в запросы через плейсхолдеры
    3. Как исключение, использовать mysqli_real_escape_string или PDO::quote
    4. Перед отдачей бразуре данных, введённых пользователем, пропускать их через htmlspecialchars
     
  3. Андрей12

    Андрей12 Новичок

    С нами с:
    18 фев 2015
    Сообщения:
    131
    Симпатии:
    0
    Можно как тупому человеку обьяснить что тут нужно?
     
  4. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Андрей12 лучше начать, что конкретно не понятно
     
  5. Андрей12

    Андрей12 Новичок

    С нами с:
    18 фев 2015
    Сообщения:
    131
    Симпатии:
    0
    Что нужно,чтобы уязвимости не было и не могли в $stenaid добавить ничего?
    При помощи sql иньекций можно попасть к файлам?
     
  6. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Нужно экранировать переменные, например с помощью mysqli_real_escape_string или PDO::quote

    могут получить пароль администратора и зайти в панель администратора и если в ней есть возможность загружать файлы, то да, примерно так

    просто прочитай книгу, там об этом написано
     
  7. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
  8. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    99,999% всех случаев покрываются либо (int) либо эскейпом =)
    Оставшиеся - это флоаты.
     
  9. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    igordata, то есть ты со строками ваще не работаешь????????????????????????????? O_O
     
  10. igordata

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

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

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

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    p@R@dox 55RU
    это для строк.

    Потенциально.
    1) с помощью инъекции, в базу записывается php-код
    2) php-код выводится на страницу "как есть" и кэшится шаблонизатором
    3) при следующей загрузке, шаблонизатор делает include файла кэша, код хакера выполняется.
    как вариант
     
  12. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    [vs], по твоему разработчики php просто так, от безделья, написали такую функцию??????????
    O_O
     
  13. [vs]

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

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Нет, но проблема в том, что она не защищает от SQL-инъекции.
     
  14. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    [vs], в документации нет описания о защите от SQL-инъекций в фильтрах :) Для этого есть другие инструменты..
    Предназначение фильтров совсем иное ;)
     
  15. [vs]

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

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    ты победил
     
  16. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    я даже не сражался, "рыцарь в черной-железной маске" :)
     
  17. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    :D
     
  18. Андрей12

    Андрей12 Новичок

    С нами с:
    18 фев 2015
    Сообщения:
    131
    Симпатии:
    0
    Будет ли толк,если делать так?
    Код (Text):
    1.   $pass11 = sf($_POST['pass1']);
    2.  $pass1 = mysql_real_escape_string($pass11);    
     
  19. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Андрей12 лучше mysqli_*
     
  20. Андрей12

    Андрей12 Новичок

    С нами с:
    18 фев 2015
    Сообщения:
    131
    Симпатии:
    0
    У меня сейчас mysql,но скоро собираюсь переходить)