![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
zluka |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 278 Регистрация: 27.7.2006 Репутация: нет Всего: 2 |
Вот простой вывод статьи из БД:
Достаточна ли защита от SQL-инъекции? |
|||
|
||||
pizzz |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 238 Регистрация: 14.12.2008 Где: Омск Репутация: 6 Всего: 8 |
Так не надо. Надо:
--------------------
Спасибо много, жмем кнопку репутация. Извините меня за орфографические ошибки, я стараюсь не ошибаться, а они все равно просачиваются гады. |
||||
|
|||||
bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
после intval смысла в mysql_real_escape_string нет
|
|||
|
||||
pizzz |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 238 Регистрация: 14.12.2008 Где: Омск Репутация: 6 Всего: 8 |
ТО есть если ид строка. То получиться 1. Хотя запросили строку..... Проше сделать так:
Добавлено через 58 секунд Голова болит... Заболел... Могу ошибаться..... --------------------
Спасибо много, жмем кнопку репутация. Извините меня за орфографические ошибки, я стараюсь не ошибаться, а они все равно просачиваются гады. |
||||
|
|||||
NewDima |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 922 Регистрация: 20.2.2006 Где: <?here?> Репутация: 10 Всего: 12 |
и в конце вернулись к той же инъекции...
если $_GET['id'] - строка не число, то выражение
всегда вернет истину а потому в $_GET['id'] может быть и "1' UNION ..." или "1' OR 1=1" поправьте, если ошибаюсь Добавлено @ 16:44 я бы использовал is_int, заодно можно хоть узнать, че нам пытаются впихать в запрос и анализировать в логах потом Это сообщение отредактировал(а) NewDima - 11.3.2009, 16:45 |
|||
|
||||
O_c0der |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 9.1.2008 Где: /root Репутация: нет Всего: нет |
100% защита от атаки sql-injection |
|||
|
||||
SneG0K |
|
|||
![]() Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: 7 Всего: 54 |
O_c0der, и что ты изменил? Барс все сказал...
Если извращать по конкретному, то регулярками и на пустоту... Хотя вполне хватит и преобразования в INT... Хотя!, на сколько мне известно что строка 1a, после преобразования к Integer, становится 1. Ну в принципе логично. НО, в параметре уже левая буква завелась, что уже значит о наличии неправильных данных и хотя в большинстве случаев мускуль вернет значение по ID, я считаю, что стоит проверять на всякое лишнее... Если программа функциклирует правильно, то левым данным в ссылке браться неоткуда... Хотя это мое мнение. |
|||
|
||||
enof |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 837 Регистрация: 23.1.2009 Где: Санкт-Петербург Репутация: 30 Всего: 35 |
SneG0K, левые данные обычно берутся не из-за неправильного функционирования системы.
и теперь не обрабатывать данные от пользователя? развернули тут, хотя все говорят об одном и том же почти ![]() mysql_escape_string or intval и ниче не страшно Это сообщение отредактировал(а) enof - 11.3.2009, 21:29 |
|||
|
||||
zluka |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 278 Регистрация: 27.7.2006 Репутация: нет Всего: 2 |
Спасибо, где целочисельный параметр я уже разобрался, а от как быть если параметр строковый:
Использовать только mysql_real_escape_string? Это сообщение отредактировал(а) zluka - 11.3.2009, 21:30 |
|||
|
||||
bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
||||
|
||||
pizzz |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 238 Регистрация: 14.12.2008 Где: Омск Репутация: 6 Всего: 8 |
Я бы его еще проверял strlen
![]() --------------------
Спасибо много, жмем кнопку репутация. Извините меня за орфографические ошибки, я стараюсь не ошибаться, а они все равно просачиваются гады. |
|||
|
||||
pompei |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 155 Регистрация: 7.9.2007 Репутация: нет Всего: 6 |
А я всегда по тупому поступаю: любые аргументы прогоняю через mysql_real_escape_string (даже целые) - 100% гарантия от sql-injection.
А чтобы не париться со всякими-там конкатенациями и не писать часто длиннющую функцию mysql_real_escape_string - я написал класс, и всегда в базу хожу так:
set_param($substring, $value) - в sql-строке все подстроки (":".$substring) заменяет на mysql_real_escape_string($value) а mysql сам преобразует строку в число если колонка целочисленная Это сообщение отредактировал(а) pompei - 12.3.2009, 06:24 --------------------
А всё оказывается гораздо проще: пассивные наноструктуры - активные наноструктуры - системы наносистем - молекулярные наносистемы - сингулярность! По пять лет на каждый этап. |
|||
|
||||
xoma |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 86 Регистрация: 4.4.2007 Репутация: нет Всего: нет |
а можно для работы с БД просто воспользоваться PDO
|
|||
|
||||
gta4kv |
|
||||||||||||||||||
![]() Walking around mad. ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1868 Регистрация: 25.7.2006 Репутация: 21 Всего: 91 |
pizzz, спасибо поржал.
isset при пустом id возвращает true, отличный совет вы дали. Было бы правильнее:
Это универсальный способ, при отсутствие id — false, при пустом — false.
Вообще то будет 0. И я предполагаю что в коде будет проверка на не существование записи, так что если юзер полезет корявыми руками то все равно ничего не выйдет. zluka, прежде чем выводить проверяйте нашлось ли что нибудь:
зачем?
Это только параноикам ![]() ![]() Так же прошу заметить что такая конструкция:
не пропустила бы id = 0, ибо 0 === false Это сообщение отредактировал(а) gta4kv - 12.3.2009, 09:38 |
||||||||||||||||||
|
|||||||||||||||||||
pompei |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 155 Регистрация: 7.9.2007 Репутация: нет Всего: 6 |
--------------------
А всё оказывается гораздо проще: пассивные наноструктуры - активные наноструктуры - системы наносистем - молекулярные наносистемы - сингулярность! По пять лет на каждый этап. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |