|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
17.07.2010, 17:55 | #1 |
Форумчанин
Регистрация: 18.04.2009
Сообщений: 688
|
SQL-инъекция
Разбираю SQL-инъекции и защиты от них. Подключился к БД:
Код:
Потом дописываю до: http://localhost/config.php/'SELECT * FROM userlist' после нажатия Entr просто происходит преобразование: http://localhost/config.php/'SELECT%...ROM%20userlist' Пробелы меняются на %20 и ничё не отображается((( Просто хотелось бы понять как эти инъекции-таки делаются (походу я что-то не так сделал) и как от них кроме mysql_real_escape_string() и ей подобных защищаться |
17.07.2010, 18:01 | #2 |
Программист
Форумчанин
Регистрация: 27.02.2009
Сообщений: 505
|
Обучать инъкциям никто не будет. Принцип таков: при помощи дыры (недостаточной фильтрации данных) в получении запроса сервером происходит ошибка, которую злоумишленник использует по своему желанию.
PHP код:
Тоесть для защиты, например цифрового параметра, мы должны на сервере сказать, что данная переменная есть формата int. PHP код:
there are no limits when you're software engineer
|
17.07.2010, 18:02 | #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 вводиться, как от них защититься? |
17.07.2010, 18:05 | #4 |
Новичок
Джуниор
Регистрация: 17.07.2010
Сообщений: 1
|
На счет преобразования - используй urldecode().
На счет инъекций - они используются в том случае, когда в твой скрипт поступают данные из форм, или же из адресной строки, и КОГДА эти данные в нем ИСПОЛЬЗУЮТСЯ. Т.е. если ты не используешь в скрипте $_GET или $_POST, например, (к ним же относятся и куки, и некоторые переменные из $_SERVER), то ничего фильтровать не надо. Главное, чтобы у тебя не было "голых" конструкций: Код:
По 3му вопросу - экранируй все полученные данные, не важно откуда они пришли. Из форм - это POST, из адресной строки - GET. Тут уже надо лучше понимать принцип работы серверных языков. Последний раз редактировалось SOKOJI; 17.07.2010 в 18:07. |
17.07.2010, 19:29 | #5 |
Старожил
Регистрация: 19.04.2010
Сообщений: 2,702
|
Это вообще не инъекция.
Инъекция - это когда мы подменяем передаваемые на сервер опасными окончаниями SQL-запросов. У вас нет передаваемых параметров и запрос полный. Если Вам интересен вопрос по sql-инъекциям и вообще безопасности, то советую прочитать книгу Кузнецова М. "Головоломки на php для хакеров". Защита от инъекций простая - фильтрация на запрещенные символы и экронирование при помощи mysql_real_escape_string. |
17.07.2010, 20:39 | #6 |
Форумчанин
Регистрация: 18.04.2009
Сообщений: 688
|
ну я прочитал пол-книги Флёнова "PHP глазами хакера", дошёл до инъекций - он БД хреново описал, начал Кузнецова "Практика создания web-сайтов" вот уже 5ю главу про безопасность читаю=)
|
17.07.2010, 22:44 | #7 |
Старожил
Регистрация: 19.04.2010
Сообщений: 2,702
|
Флёнов "PHP глазами хакера" - книга хорошая в плане описания общей защиты сервера, про скрипты там довольно плохо описано.
Кузнецов "Практика создания web-сайтов" - безопасность он там поверхностно просматривает. Лучше возьмите Кузнецова М. "Головоломки на php для хакеров" - там про безопасность скриптов достаточно подробно написано, много примеров, книга достаточно новая. |
19.07.2010, 23:57 | #8 | |
Форумчанин
Регистрация: 07.09.2009
Сообщений: 361
|
Цитата:
( т.е. есть только базовые знания и понятия синтаксиса) А то куплю,а потом придётся держать её на полке до поры до времени,а там авось и что-то лучше выйдет. Хотелось бы именно книгу основанную на примерах, а не сухую теорию. |
|
20.07.2010, 08:42 | #9 | |
Старожил
Регистрация: 19.04.2010
Сообщений: 2,702
|
Цитата:
|
|
20.07.2010, 16:06 | #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 |