Форум → Программирование → Пыхнуть хотите? → F.A.Q. → Безопасность.Часть 1.SQL-иньекции
Безопасность.Часть 1.SQL-иньекции
Страницы: ← Предыдущая страница • Следующая страница →
-
13 сентября 2007 г. 14:01, спустя 49 минут 35 секунд
а какая польза?
цель — получить что-то. например пароли
в получить — это селектвсе умрут, а я изумруд -
13 сентября 2007 г. 14:10, спустя 9 минут 18 секунд
нет,SAP,ни удаление ,ни апдейт ты сделать не сможешь,т.к. union работает только с помощью select,ведь ни то,ни другое по своей сущности результата не возвращают(это же операторы),т.е. им нечего вывести на экран,а выводить что-то обязательно требуется.
Но есть вариант.Дело в том,что при использовании расширения mysql для PHP,ты не можешь выполнять там более одного запроса,а значит и вариант с апгрейдом или удалением провалится.Но если программист будет использовать новое расширение mysqli,то у тебя появится шанс для множественного запроса,и тогда тебе не нужно будет ломать голову над этой проблемой -
13 сентября 2007 г. 15:29, спустя 1 час 19 минут 11 секунд
Ещё можно использовать Extension : PDO, Mysqli & etc…. поддерживающие плейсхолдеры -
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
Разве не сработает? -
14 сентября 2007 г. 9:21, спустя 12 часов 6 минут 8 секунд
SAP,я не понимаю почему в последнем запросе тебе потребовался апостроф и выражение or 1=1(почему все or пишут с большой?=))
Сомневаюсь ,что айдишники удаленных будут передаваться по гету,подумай хорошо -
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 пишут с большой?=))
Так принято :)Сомневаюсь ,что айдишники удаленных будут передаваться по гету,подумай хорошо
Это уже другой вопрос :))) Понято, что не будут, я чисто теоретически рассматриваю данный вариант :) -
14 сентября 2007 г. 16:43, спустя 9 минут 51 секунду
Только если 10ки не существует.Также советую ставить знак /* чтобы после не было всяких инородных проверок на права,хотя если умные вначале поставят,и вообще ,если умные,иньекция не пройдет,но это так,к слову -
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 на все случаи жизни -
18 сентября 2007 г. 12:26, спустя 28 минут 25 секунд
да от иньекций можно защититься и подготовленными запросами,только этим редко кто пользуется,а вещь-то шикарная -
-
19 октября 2007 г. 19:54, спустя 15 минут 39 секунд
Pasha
а ты это сайт делал?
а в чем прикол своё то ломать?
Я с дизайнером работаю этим…у него работ много…вот что то откопал -
-
7 января 2008 г. 2:28, спустя 79 дней 7 часов 26 минут
А тогда такой вопрос, щас модно ЧПУ на cms ставить и пользуются обычно правилами в хтаццесе. К с сайтам с ЧПУ применимы аналогичные способы? -
7 января 2008 г. 9:06, спустя 6 часов 37 минут 47 секунд
я думаю, что нет
ибо реврайт по своему условию уже не будет пропускать знаки отличные от тех, что прописаны в условии
например, если поставить
то ничего кроме a-Z не будет приходить к скриптуRewriteRule ^([a-zA-Z]*)$ letters.php?$1
все умрут, а я изумруд -
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.
Страницы: ← Предыдущая страница • Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!