ФорумПрограммированиеПыхнуть хотите?F.A.Q. → Безопасность.Часть 1.SQL-иньекции

Безопасность.Часть 1.SQL-иньекции

  • md5

    Сообщения: 11960 Репутация: N Группа: в ухо

    Spritz 13 сентября 2007 г. 14:01, спустя 49 минут 35 секунд

    а какая польза?
    цель — получить что-то. например пароли
    в получить — это селект
    все умрут, а я изумруд
  • cage

    Сообщения: 429 Репутация: N Группа: Кто попало

    Spritz 13 сентября 2007 г. 14:10, спустя 9 минут 18 секунд

    нет,SAP,ни удаление ,ни апдейт ты сделать не сможешь,т.к. union работает только с помощью select,ведь ни то,ни другое по своей сущности результата не возвращают(это же операторы),т.е. им нечего вывести на экран,а выводить что-то обязательно требуется.
    Но есть вариант.Дело в том,что при использовании расширения mysql для PHP,ты не можешь выполнять там более одного запроса,а значит и вариант с апгрейдом или удалением провалится.Но если программист будет использовать новое расширение mysqli,то у тебя появится шанс для множественного запроса,и тогда тебе не нужно будет ломать голову над этой проблемой
  • Patrick

    Сообщения: 506 Репутация: N Группа: Кто попало

    Spritz 13 сентября 2007 г. 15:29, спустя 1 час 19 минут 11 секунд

    Ещё можно использовать Extension : PDO, Mysqli & etc…. поддерживающие плейсхолдеры
  • sap

    Сообщения: 2701 Репутация: N Группа: Кто попало

    Spritz 13 сентября 2007 г. 21:15, спустя 5 часов 45 минут 55 секунд

    2 cage

    Ну почему же… Например, в коде есть запрос:
    mysql_query ("DELETE FROM table WHERE id='".$_GET['id']."'");

    В адресной строке соответственно что-то вроде index.php?action=delete&id=10 (не суть важно). И если набрать допустим index.php?action=delete&id=10' OR 1=1
    Разве не сработает?

  • cage

    Сообщения: 429 Репутация: N Группа: Кто попало

    Spritz 14 сентября 2007 г. 9:21, спустя 12 часов 6 минут 8 секунд

    SAP,я не понимаю почему в последнем запросе тебе потребовался апостроф и выражение or 1=1(почему все or пишут с большой?=))
    Сомневаюсь ,что айдишники удаленных будут передаваться по гету,подумай хорошо
  • sap

    Сообщения: 2701 Репутация: N Группа: Кто попало

    Spritz 14 сентября 2007 г. 16:33, спустя 7 часов 11 минут 50 секунд

    Ну тут я чуть-чуть напутал :) Вот так:
    Код запроса:
    mysql_query ("DELETE FROM table WHERE id=".$_GET['id']."");

    При index.php?action=delete&id=10 соответственно:
    mysql_query ("DELETE FROM table WHERE id=10");

    При index.php?action=delete&id=10 OR 1=1 соответственно:
    mysql_query ("DELETE FROM table WHERE id=10 OR 1=1");

    Должна очиститься вся таблица, потому что 1=1 всегда TRUE.

    почему все or пишут с большой?=))

    Так принято :)

    Сомневаюсь ,что айдишники удаленных будут передаваться по гету,подумай хорошо

    Это уже другой вопрос :))) Понято, что не будут, я чисто теоретически рассматриваю данный вариант :)
  • cage

    Сообщения: 429 Репутация: N Группа: Кто попало

    Spritz 14 сентября 2007 г. 16:43, спустя 9 минут 51 секунду

    Только если 10ки не существует.Также советую ставить знак /* чтобы после не было всяких инородных проверок на права,хотя если умные вначале поставят,и вообще ,если умные,иньекция не пройдет,но это так,к слову
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 18 сентября 2007 г. 11:58, спустя 3 дня 19 часов 14 минут

    от sql-иньекций можно защититься вьюхами кстати))

    ##########

    Структура таблицы tab1:
    id - login - passwd - username - info - level

    скрипт выводит только: id - username - info

    http://example.com/usershow.php?level=admin
    при level=admin выводит админов

    Запрос:
    http://example.com/usershow.php?level=admin+union+select+null,login,passwd,null,null,null/*

    ##########

    Защищаем:

    CREATE VIEW users_admin_level AS
    SELECT id, username, info
    FROM tab1
    WHERE `level` = 'admin'

    ##########

    и пользуемся вьюхой вместо нормального обращения к табле

    SELECT * FROM users_admin_level

    ##########

    Может пример и не удачный, но хорошо описывает как можно защитится от sql иньекций))

    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • cage

    Сообщения: 429 Репутация: N Группа: Кто попало

    Spritz 18 сентября 2007 г. 12:26, спустя 28 минут 25 секунд

    да от иньекций можно защититься и подготовленными запросами,только этим редко кто пользуется,а вещь-то шикарная
  • Patrick

    Сообщения: 506 Репутация: N Группа: Кто попало

    Spritz 19 октября 2007 г. 19:38, спустя 31 день 7 часов 11 минут

    Pasha
    а ты это сайт делал?
  • pasha

    Сообщения: 1048 Репутация: N Группа: Адекваты

    Spritz 19 октября 2007 г. 19:54, спустя 15 минут 39 секунд


    Pasha
    а ты это сайт делал?

    а в чем прикол своё то ломать?

    Я с дизайнером работаю этим…у него работ много…вот что то откопал
  • pasha

    Сообщения: 1048 Репутация: N Группа: Адекваты

    Spritz 19 октября 2007 г. 20:02, спустя 7 минут 40 секунд

    ВО!
    Заказываем агрессор ролики дешево =)

    link

    Вместо 500 укажите свою цену)
  • Z-MODe

    Сообщения: 199 Репутация: N Группа: Кто попало

    Spritz 7 января 2008 г. 2:28, спустя 79 дней 7 часов 26 минут

    А тогда такой вопрос, щас модно ЧПУ на cms ставить и пользуются обычно правилами в хтаццесе. К с сайтам с ЧПУ применимы аналогичные способы?
  • md5

    Сообщения: 11960 Репутация: N Группа: в ухо

    Spritz 7 января 2008 г. 9:06, спустя 6 часов 37 минут 47 секунд

    я думаю, что нет
    ибо реврайт по своему условию уже не будет пропускать знаки отличные от тех, что прописаны в условии
    например, если поставить
    RewriteRule ^([a-zA-Z]*)$ letters.php?$1
    то ничего кроме a-Z не будет приходить к скрипту
    все умрут, а я изумруд
  • Frozzeg

    Сообщения: 5641 Репутация: N Группа: Джедаи

    Spritz 21 июля 2008 г. 21:19, спустя 196 дней 11 часов 13 минут

    1)Самый простой(также самый непопулярный,т.к. проходит только на сайтах ламаков)
    Пишите в URL следующую строку
    cage.hacker.com/index.php?id=2+1


    создал тестов скрипт без какой либо защиты - данный способ не пашет, да и вообще ничего из данной статьи не прошло
    You can be anything you want to be. Just turn yourself into anything you think that you could ever be.

Пожалуйста, авторизуйтесь, чтобы написать комментарий!