Pull to refresh

Comments 10

Посмотрел diff но так и не понял суть бага, точнее как оно может быть связано с длиной коммента?
Если пользователь постит коммент, то его обработку (экранирование спец-символов) можно сделать до помещения в БД или после (при выводе).
Предположим коммент обрабатывается до помещения в БД функцией типа htmlentities() (замена < и > на &lt; &gt;) и коммент не влазит в 64кб при записи в базу.
Значит туда будет записан кусок текста, но текст должен быть обработан и отфильтрован ещё перед записью в БД и никаких «тегов» там остаться не должно.

Фикс судя по DIFFу заключается в том что они проверяют длину данных в соответствие с типами полей в БД и если у вас коммент длинее 64Кб а поле MySQL TEXT то он не пройдёт.
Разобрался. Дело в списке «разрешённых тегов» типа <a> и доп. атрибутах внутри тега. И фильтрация атрибутов у них не срабатывает корректно из-за «обрезания» данных.
Там вообще нет обрезки тегов. Все аргументы ескейптся с помощью мускульной функции. В базу попадает уже отъескепленный текст любого размера. И уже база делает отлуп превышения размерности.
Коммит — очередной костыль, к XSS не имеющий никакого отношения.
А это вообще шедевр
public function escape_by_ref( &$string ) { 
    if ( ! is_float( $string ) ) 
        $string = $this->_real_escape( $string ); 
}

Как, собственно, и весь ВП :)
Другое дело, что комменты часто отключены…
Sign up to leave a comment.

Articles