Баг :Модификация функции sed_cc()
Статус :Исправлено
Серьёзность :Нормальное
Репортер :Amro 31-05-12 23:45
Обновил :Amro 02-06-12 14:43
КатегорияГлавное
Версия :170
Частота :Постоянно
Пофиксено в :171
Детали :

Функция sed_cc() отлично себя оправдала, и спасала от многих уязвимостей, но она нормально работает только в BBCode режиме, для HTML режима необходима её модификация в сторону htmlspecialchars(). 

function sed_cc($text, $ent_quotes = null)
	{
	  global $cfg;
    
    if ($cfg['textmode']=='html') 
    {
      return is_null($ent_quotes) ? htmlspecialchars($text) : htmlspecialchars($text, ENT_QUOTES);
    } else 
    {
       $text = preg_replace('/&#([0-9]{2,4});/is','&&#35$1;',$text);
	     $text = str_replace(
	     array('{', '<', '>' , '$', '\'', '"', '\\', '&amp;', '&nbsp;'),
	     array('&#123;', '&lt;', '&gt;', '&#036;', '&#039;', '&quot;', '&#92;', '&amp;amp;', '&amp;nbsp;'), $text);
       return($text);     
    }
	}

sed_cc() c параметром ENT_QUOTES используется в HTML режиме для вывода данных в textarea поля. Это необходимо для нормальной обработки кавычек. 

Затронутые части :functions.php

История и комментарии :

Нет записей