![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 18.04.2009
Сообщений: 688
|
![]()
Разбираю SQL-инъекции и защиты от них. Подключился к БД:
Код:
Потом дописываю до: http://localhost/config.php/'SELECT * FROM userlist' после нажатия Entr просто происходит преобразование: http://localhost/config.php/'SELECT%...ROM%20userlist' Пробелы меняются на %20 и ничё не отображается((( Просто хотелось бы понять как эти инъекции-таки делаются (походу я что-то не так сделал) и как от них кроме mysql_real_escape_string() и ей подобных защищаться |
![]() |
![]() |
![]() |
#2 |
Программист
Форумчанин
Регистрация: 27.02.2009
Сообщений: 505
|
![]()
Обучать инъкциям никто не будет. Принцип таков: при помощи дыры (недостаточной фильтрации данных) в получении запроса сервером происходит ошибка, которую злоумишленник использует по своему желанию.
PHP код:
Тоесть для защиты, например цифрового параметра, мы должны на сервере сказать, что данная переменная есть формата int. PHP код:
there are no limits when you're software engineer
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 18.04.2009
Сообщений: 688
|
![]()
Причём результат отображения страниц http://localhost/config.php/ и http://localhost/config.php/'SELECT * FROM userlist' одинаков.
Ради эксперимента написал http://vkontakte.ru/'SELECT%20*%20FROM%20users'. В результате было написано NOT FOUND (я канеш не пытался ломануть дурова а просто проверял как это дело работает=)) Возникают следующие вопросы: 1. Правильно ли я делаю SQL-инъекцию 2. Почему на локальном хосте после такой же неудачной инъекции всё0таки что-то отобразилось (то же самое что и на странице до инъекции) и контакт выдал NOT FOUND 3. Экранирование защищает от инъекций, который вводятся в поля ввода. например в имя пользователя и пароль. А ведь инхекции ещё могут и в строку ввода url вводиться, как от них защититься? |
![]() |
![]() |
![]() |
#4 |
Новичок
Джуниор
Регистрация: 17.07.2010
Сообщений: 1
|
![]()
На счет преобразования - используй urldecode().
На счет инъекций - они используются в том случае, когда в твой скрипт поступают данные из форм, или же из адресной строки, и КОГДА эти данные в нем ИСПОЛЬЗУЮТСЯ. Т.е. если ты не используешь в скрипте $_GET или $_POST, например, (к ним же относятся и куки, и некоторые переменные из $_SERVER), то ничего фильтровать не надо. Главное, чтобы у тебя не было "голых" конструкций: Код:
По 3му вопросу - экранируй все полученные данные, не важно откуда они пришли. Из форм - это POST, из адресной строки - GET. Тут уже надо лучше понимать принцип работы серверных языков. Последний раз редактировалось SOKOJI; 17.07.2010 в 18:07. |
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 19.04.2010
Сообщений: 2,702
|
![]()
Это вообще не инъекция.
Инъекция - это когда мы подменяем передаваемые на сервер опасными окончаниями SQL-запросов. У вас нет передаваемых параметров и запрос полный. Если Вам интересен вопрос по sql-инъекциям и вообще безопасности, то советую прочитать книгу Кузнецова М. "Головоломки на php для хакеров". Защита от инъекций простая - фильтрация на запрещенные символы и экронирование при помощи mysql_real_escape_string. |
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 18.04.2009
Сообщений: 688
|
![]()
ну я прочитал пол-книги Флёнова "PHP глазами хакера", дошёл до инъекций - он БД хреново описал, начал Кузнецова "Практика создания web-сайтов" вот уже 5ю главу про безопасность читаю=)
|
![]() |
![]() |
![]() |
#7 |
Старожил
Регистрация: 19.04.2010
Сообщений: 2,702
|
![]()
Флёнов "PHP глазами хакера" - книга хорошая в плане описания общей защиты сервера, про скрипты там довольно плохо описано.
Кузнецов "Практика создания web-сайтов" - безопасность он там поверхностно просматривает. Лучше возьмите Кузнецова М. "Головоломки на php для хакеров" - там про безопасность скриптов достаточно подробно написано, много примеров, книга достаточно новая. |
![]() |
![]() |
![]() |
#8 | |
Форумчанин
Регистрация: 07.09.2009
Сообщений: 361
|
![]() Цитата:
( т.е. есть только базовые знания и понятия синтаксиса) А то куплю,а потом придётся держать её на полке до поры до времени,а там авось и что-то лучше выйдет. Хотелось бы именно книгу основанную на примерах, а не сухую теорию. |
|
![]() |
![]() |
![]() |
#9 | |
Старожил
Регистрация: 19.04.2010
Сообщений: 2,702
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#10 |
Форумчанин
Регистрация: 18.04.2009
Сообщений: 688
|
![]()
MrJenika, лучше покупай Кузнецова ПРАКТИКА СОЗДАНИЯ WEB-САЙТОВ. всё очень подробно и понятно описано.
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Удаление строки с помощью SQL запроса (Query1.SQL.ADD('Delete....')) | Schutze | Помощь студентам | 6 | 29.11.2009 22:15 |
Создание новых таблиц в MS SQL SERVERE через SQL запрос в Delphi | S_Yevgeniy | Помощь студентам | 1 | 27.10.2009 06:26 |
sql или не sql | Diamand | SQL, базы данных | 9 | 18.09.2008 17:17 |
SQL запрос на основе другого SQL запрса... | Timoxa | БД в Delphi | 1 | 07.01.2007 18:15 |