У меня есть страница поиска на моем веб-сайте (созданная с помощью 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'