Codeigniter XSS Filtering игнорирует знак% - PullRequest
0 голосов
/ 30 апреля 2019

У меня есть страница поиска на моем веб-сайте (созданная с помощью CodeIgniter), которая принимает строку запроса в кодировке URL, например http://somesite.com/search?q=123. Я хочу, чтобы содержимое параметра q отображалось на странице поиска.Проблема в том, что когда я вызываю xss_clean() для значения параметра (либо при чтении строки запроса, либо при ее выводе), он преобразует любое существование символа процентиля в его эквивалентный символ в кодировке URL.Например, ?q=100%25%20500, что обозначает строку поиска 100% 500, печатается как 100P0, поскольку логика фильтрации XSS CodeIgniter, по-видимому, интерпретирует % 50 как %50 (игнорируя пробел), что переводится в символP, следуя правилам кодирования HTML.Итак, мой вопрос: что я могу сделать, чтобы разрешить как символ % в моих поисках, так и фильтровать его по XSS?

Вот мой фрагмент кода, если он помогает лучше понять проблему:

<?php 

$s = $this->input->get('q', FALSE);
echo "<p>You searched for $s</p>"; //this will show '100% 500'

$this->load->helper('security');
$t = xss_clean($s);

echo "<p>You searched for $t</p>"; //this will show '100P0'
...