CodeIgniter добавление точек с запятой - PullRequest
2 голосов
/ 10 ноября 2009

Как остановить CodeIgniter, добавляя точки с запятой ; к данным, отправляемым через POST, который содержит амперсанд & ?

Например, он преобразует «a = 1 & b = 2 & c = 3» в «a = 1 & b; = 2 & c; = 3». Судя по форумам, кажется, что это XSS-фильтрация, которую я не хочу отключать для всего сайта только для 1 контроллера, поэтому я попробовал приведенный ниже код, но он все еще делает это:

$this->config->set_item('global_xss_filtering',false);

Ответы [ 3 ]

0 голосов
/ 25 марта 2013

Проблема в классе безопасности

Следующая строка добавляет точку с запятой, если она отсутствует.

$str = preg_replace('#(&\#?[0-9a-z]{2,})([\x00-\x20])*;?#i', "\\1;\\2", $str);

Решение состоит в том, чтобы расширить CI, создав собственный класс My_Security. Вставьте его в основную папку с помощью функции _validate_entities.

Прокомментируйте строку выше.

0 голосов
/ 17 февраля 2014

Чтобы отключить межсайтовую фильтрацию сценариев, обратитесь к codeigniter на этой странице руководства пользователя

В качестве альтернативы, если вы хотите оставить исправление кода, взломав ядро, проверьте это решение

0 голосов
/ 13 января 2010

Я не использую XSS-фильтрацию, так как в ней все еще есть ошибка. Например, вы не сможете опубликовать форму, в которой есть код для вставки YouTube, когда включена фильтрация XSS. Я использую фильтр только для каждого поля, которое я хочу очистить.

Если ваша форма работает с отключенной фильтрацией XSS, отключите ее. Если вам нужно обезопасить его от атак XSS, возможно, стоит рассмотреть другую библиотеку, такую ​​как очиститель HTML .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...