Комментарии 7
Угу. В репозитории с начала марта по конец апреля сотня коммитов, за май — всего пять штук. И те — фиксы.
Впрочем, все и так всё понимают.
Впрочем, все и так всё понимают.
+1
И это грустно… Потихоньку пропадает удобный, хорошо документированный фрэймворк…
+1
Кстати, можно вопросик? Вы не сталкивались с такой особенностью кодеигнитеровского XSS фильтра — он убивает ссылки в href`ах и src картинок при получении данных их массива POST? Причем ссылки совершенно безобидные.
0
Конкретно с убийством ссылок из POST не сталкивался. Можно пример? Но вообще сталкивался с какими-то мелкими неудобствами при постинге комментариев.
+1
Вот в том и соль. Натыкаюсь на эту проблему как раз при разработке скриптов постинга новостей или комментов.
Если посылать с формы на сервер текст вроде «Тут должна быть картинка <img src='http://asd.ru/img.jpg' align=right>» то из $this->input->post(«key») удастся выудить лишь «Тут должна быть картинка <img src=' ' align=right>»
Нашел регулярку, которая, по идее, и режет эти src, но, увы, не силен в них (( Если строку с ней закомментить, то все, конечно, в порядке. Но зачем тогда вообще включать этот XSS фильтр )
Эта функция находится в libraries/Input.php
И вот как она вызывается в этом же файле:
Если посылать с формы на сервер текст вроде «Тут должна быть картинка <img src='http://asd.ru/img.jpg' align=right>» то из $this->input->post(«key») удастся выудить лишь «Тут должна быть картинка <img src=' ' align=right>»
Нашел регулярку, которая, по идее, и режет эти src, но, увы, не силен в них (( Если строку с ней закомментить, то все, конечно, в порядке. Но зачем тогда вообще включать этот XSS фильтр )
function _js_img_removal($match)
{
$attributes = $this->_filter_attributes(str_replace(array('<', '>'), '', $match[1]));
return str_replace($match[1], preg_replace("#src=.*?(alert\(|alert&\#40;|javascript\:|charset\=|window\.|document\.|\.cookie|<script|<xss|base64\s*,)#si", "", $attributes), $match[0]);
}
* This source code was highlighted with Source Code Highlighter.
Эта функция находится в libraries/Input.php
И вот как она вызывается в этом же файле:
$str = preg_replace_callback("#<img\s+([^>]*?)(\s?/?>|$)#si", array($this, '_js_img_removal'), $str);
* This source code was highlighted with Source Code Highlighter.
0
Мдя. Я тоже не настолько силён оказался, чтоб сообразить, в чём проблема. Могу разве что посоветовать спросить на форуме и\или воспользоваться конструкторами регэкспов и поэкспериментировать с регуляркой.
Вот парочка онлайновых есть.
www.pcre.ru/eval/
gskinner.com/RegExr/
Вот парочка онлайновых есть.
www.pcre.ru/eval/
gskinner.com/RegExr/
0
Ладно, спасибо, будем копать дальше ) Истина где-то рядом :)
Стыдно признаться, но для себя пока что решил эту проблему hook`ом, который перед инициализацией системы дублирует массив $_POST неотфильтрованный в глобальную переменную $POST_ =) И в случае чего, нужные переменные нефильтрованные беру с него. Но некрасиво это конечно жутко…
Стыдно признаться, но для себя пока что решил эту проблему hook`ом, который перед инициализацией системы дублирует массив $_POST неотфильтрованный в глобальную переменную $POST_ =) И в случае чего, нужные переменные нефильтрованные беру с него. Но некрасиво это конечно жутко…
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Добавляем так недостающий parse_string()