Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Защита от XSS и SQL-инъекций
Возник вопрос: правильна ли такая обработка в принципе, в частности, обработка паролей: нужно ли применять эти функции к ним? заранее благодарю
illy
Отправлено: 06 Октября, 2011 - 09:35:03
Участник
Покинул форум
Сообщений всего: 1117
Дата рег-ции: Июль 2011 Откуда: от верблюда)
Помог: 28 раз(а)
Тоже вопрос задам про защиту.
А что если просто делать проверку в логине лишних символов типа <?;.," ' и т.д.
Если они имеются, то просто выход делать exit;
Либо удалять их, оставляя только буквы,цифры, пробелы.
----- Всё гениальное - просто
И ещё проще, если ты - индиго
JohnnyB
Отправлено: 06 Октября, 2011 - 09:36:26
Новичок
Покинул форум
Сообщений всего: 49
Дата рег-ции: Сент. 2011
потому что trim обрезает пробелы, а если сперва зашифровать в md5 то и все пробелы зашифруются и trim после использовать смысла не будет, да и mysqlrealescape лишнее так как после md5 не будет никаких запрещенных символов.
Ammiak
Отправлено: 06 Октября, 2011 - 09:56:48
Частый гость
Покинул форум
Сообщений всего: 232
Дата рег-ции: Апр. 2011
Помог: 0 раз(а)
имхо, в случае с паролями можно делать просто:
Цитата:
$password = md5($_POST['password']);
ведь на то и пароль, чтоб можно было в нём юзать любой символ, в т.ч. пробелы, разве нет?
Zuldek
Отправлено: 06 Октября, 2011 - 09:57:48
Постоянный участник
Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010
Помог: 50 раз(а)
illy пишет:
Тоже вопрос задам про защиту.
А что если просто делать проверку в логине лишних символов типа <?;.," ' и т.д.
Если они имеются, то просто выход делать exit;
Либо удалять их, оставляя только буквы,цифры, пробелы.
Дело в том что символов-прокладок много. Если решили идти методом обрезания символа, то просто ставите регулярочку чтобы обработчик принимал только определенные символы (A-z, цифры 0-9 и пр.).
Приведенные топик-стартером фильтры в принципе достаточны, что не сказать о самой форме. Если это критически важная форма авторизации, то я бы добавил каптчу и ограничение на количество повторов ввода, после чего блокировал бы авторизацию с конкретного ip, это усложнит взлом учеток школьниками через разного рода бруты.
Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010
Помог: 50 раз(а)
Ammiak пишет:
и можно ли через поле password провести xss или инъекцию при такой обработке? (Это я к своему предыдущему посту)
Вы используете хеш и нигде не выводите начальные введенные пользователем данные.
Через указанные вами скрипты и через поле password формы атаки рода xss или инжект невозможны.
Однако вполне можно поэкспериментировать с вводом длинных значений в ваши поля, ограничений на это я не нашел. И посмотреть что будет вываливать ваша страница при превышении значением допустимого в поле бд пространства. На данный момент, если не инжект, то перегрузить сервер частыми запросами неограниченный длинны даже через эти 2 поля задача не сложная.
Покинул форум
Сообщений всего: 232
Дата рег-ции: Апр. 2011
Помог: 0 раз(а)
Цитата:
Однако вполне можно поэкспериментировать с вводом длинных значений в ваши поля, ограничений на это я не нашел.
Ограничение на длину пароля я делал, на стороне клиента через js. Длину логина специально не ограничивал, должна ограничиваться длиной самого инпута (maxlength="36"), в первом посте не указал
Покинул форум
Сообщений всего: 1117
Дата рег-ции: Июль 2011 Откуда: от верблюда)
Помог: 28 раз(а)
Может ли инъекция навредить при передаче данных.
Вот ввёл он в логин скрипт инъекции и отправил.
Обработчик берёт значение этого логина и просто вносит в базу.
Здесь он никак не навредит? Только при выводе информации?
----- Всё гениальное - просто
И ещё проще, если ты - индиго
Santehnick
Отправлено: 19 Октября, 2011 - 21:52:41
Новичок
Покинул форум
Сообщений всего: 13
Дата рег-ции: Сент. 2010
Помог: 0 раз(а)
illy пишет:
Может ли инъекция навредить при передаче данных.
Вот ввёл он в логин скрипт инъекции и отправил.
Обработчик берёт значение этого логина и просто вносит в базу.
Здесь он никак не навредит? Только при выводе информации?
навредит и еще как, сначала проверят проходит ли sql-injection, специально напишут так, чтобы запрос к базе данных получился бы не верным и соответственно получится ошибка, поймут что есть уязвимость и вместе с этим запросом могут отправить еще какие-нибудь или в этот допишут что-нибудь интересное, зависит от ситуаций и как написан сам запрос. поэтому экранировать нужно всегда. А вот в случае с xss, то тут да, навредить могут только при выводе информации на страницу, но опять же смотри, лучше один раз на этапе записи данных в базу позаботится о преобразовании спец. символов в html сущности при помощи функции htmlspecialchars() и быть уверенным, чем потом быть параноиком и при каждом выводе данных из базы обрабатывать их этой функцией. (Добавление)
Ammiak пишет:
Цитата:
Однако вполне можно поэкспериментировать с вводом длинных значений в ваши поля, ограничений на это я не нашел.
Ограничение на длину пароля я делал, на стороне клиента через js. Длину логина специально не ограничивал, должна ограничиваться длиной самого инпута (maxlength="36"), в первом посте не указал
нужно все равно проверять на стороне сервера, js при желании смогут отключить в браузере или вообще возьмут данные тебе и отправят при помощи поддельной html-формы. ну или если лень в скрипте проверять, можно в мускуле ограничить, просто задать длину полю и всё, больше этого все равно как не старайся мускуль записывать откажется.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.