![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
tolik777 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 19.6.2006 Репутация: нет Всего: 2 |
Обнаружил на своем сайте XSS-уязвимость.
Есть поиск по сайту. Код такой обработки данных:
Проблема в том, что проходит код XSS типа http://*****.ru/search.php?search_string=%22%3E%3Ch1%3EX_S_S%3C/h1%3E%3Ca%20href=%22search.php?search_string= Можно конечно поставить echo 'Вы искали: '.htmlspecialchars($search_word); Но у меня там много вывода, да и хотелось бы сразу на входе защитить. На ум ничего больше не приходит, как вырезать все знаки % (т.к. в поисковом слове не используются), или ухищрения при помощи декодирования строки запроса. Что посоветуете кроме как фильтровать на выходе при помощи htmlspecialchars??? |
|||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
Я бы порекомендовал приучать себя фильтровать на выходе.
Входов много, а выход - один. |
|||
|
||||
slaw |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 19.4.2008 Репутация: нет Всего: 1 |
будем считать, что ты пошутил... до вывода серв ляжет при хорошем XSS tolik777, убивай все спецсимволы, потому что помимо % есть еще варианты (или можешь экранировать их) ты же вход защищаешь ![]() |
|||
|
||||
tolik777 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 19.6.2006 Репутация: нет Всего: 2 |
Именно поэтому и хочу на входе все отбросить. Тут просто на форуме в основном все предлагают при выводе ставить функцию htmlspecialchars, а про вход ничего нет. Хмм, вроде бы strip_tags решает все проблемы. Что-то я про нее совсем забыл. |
|||
|
||||
Kallisto |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 163 Регистрация: 20.4.2007 Репутация: -3 Всего: -1 |
Как вариант:
foreach($_REQUEST as $key=>$value) $_REQUEST[$key] = addslashes(htmlspecialchars($value)); ![]() Это сообщение отредактировал(а) Kallisto - 13.6.2008, 13:48 |
|||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
хехе.
приятно послушать беседу настоящих специалистов. можно я со своими дурацкими вопросами? Не могли бы вы пояснить механизм этого "укладывания"? Если кто-нибудь из вас объяснит механизм действия XSS на входе, а не а выходе, то на форуме тут же что-нибудь появится на эжту тему. гениальное решение. а в чем его принципиальное отличие от htmlspecialchars? |
|||
|
||||
tolik777 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 19.6.2006 Репутация: нет Всего: 2 |
да чо-то я ступил, от супрастина вообще торможу. воспрос закрыт
|
|||
|
||||
tolik777 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 19.6.2006 Репутация: нет Всего: 2 |
Еще один вопрос. Сделал функцию фильтрации, но не могу понять почему у меня если использовать htmlentities, а затем mysql_real_escape_string к русским словам добавляется \0?
К примеру следующий код:
Выдает: 4 5 6 Вы искали: тест\0 |
|||
|
||||
tolik777 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 19.6.2006 Репутация: нет Всего: 2 |
Если заменить htmlentities на htmlspecialchars, то все ок, символы не добавляются.
|
|||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
результат работы mysql_real_escape_string тебя вообще не должен волновать
и уж тем более, результату работы этой функции нечего делать на экране |
|||
|
||||
SelenIT |
|
||||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 32 Всего: 401 |
Самый надежный вариант:
А вообще самый стандартный, логичный и правильный вариант. -------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
||||
|
|||||
nerezus |
|
||||||||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 12 Всего: 43 |
Защищать ничего не надо. Нужно просто подготавливать данные для вывода при выводе. Советую использовать PHP/Smarty/etc шаблонизатор Добавлено через 2 минуты и 11 секунд
|
||||||||
|
|||||||||
lukas |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 23.2.2007 Репутация: 3 Всего: 15 |
я не понял что значит у меня много вывода???, в чем проблема... -------------------- http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi. |
|||
|
||||
MoLeX |
|
|||
![]() Местный пингвин ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4076 Регистрация: 17.5.2007 Репутация: 46 Всего: 140 |
дату темы смотели?!) автор уже наверное решил проблему)
-------------------- Amazing ![]() |
|||
|
||||
SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 32 Всего: 401 |
MoLeX, я специально поднял, в связи с недавно всплывавшим похожим вопросом. Чтобы закрыть ее на правильной ноте. А то порядком поднадоели эти регулярные попытки изобрести "лекарство от XSS на входе"... ;)
-------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |