[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: XSS - мой скрипт
tolik
Всем привет, хочу на форум добавить смайлы, сейчас на форуме весь текст просто обрабатывается через htmlspecialchars - то есть изначально попадая в базу экранируется mysql_real_escape_string для защиты от SQL инъекции, а уже выводится для людей через htmlspecialchars.
Хочу добавить смайлы вот так:

$smile=array(
"1" => ':1:',
"2" => ':)',
"3" => ':(',
"4" => ':4:',
"5" => ':life:');
$smile2=array(
"1" => '<img src="/images/smile1.gif" alt="."/>',
"2" => '<img src="/images/smile2.gif" alt="."/>',
"3" => '<img src="/images/smile3.gif" alt="."/>',
"4" => '<img src="/images/smile4.gif" alt="."/>',
"5" => '<img src="/images/smile5.gif" alt="."/>');
$text=htmlspecialchars($text);
$a=0;
while($a++<5){//5 заменяем на количество смайлов в массиве
$text=str_replace(''.$smile[$a].'', ''.$smile2[$a].'', ''.$text.'');
}
echo ''.$text.'<br/>';

Переменная $text выводится из базы, далее ее обрабатывает htmlspecialchars, далее добавляем смайлы из массива, скажите мне пожалуйста можно ли как то обойти такую фильтрацию? По моей логике ее обойти нельзя так как текст заменяется на смайлы только если они есть в массиве. Решил спросить так как не уверен на 100% в защите от XSS - вы сможете обойти данную фильтрацию и всунуть какой то код html в текст?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.