Да, если вы хотите разрешить байты не ASCII, вам нужно добавить их в permitted_uri_chars
. Эта функция работает с URL-декодированными строками (обычно, если в среде нет ничего необычного), поэтому вы должны поместить в строку нужные стенографические байты, а не просто %
и шестнадцатеричные цифры. (Да, я сказал байты: _filter_uri
не использует регулярные выражения Unicode, поэтому вы не можете использовать диапазон Unicode.)
Попытка отфильтровать входящие значения (вместо кодирования исходящих) является нелепо базовой ошибкой, которую удручает найти в популярной среде. Вы можете отключить эту ошибочную функцию, установив permitted_uri_chars
в пустую строку, или, возможно, вы захотите диапазон всех байтов, кроме управляющих кодов ("\x20-\xFF"
). К сожалению, функция _filter_uri
все еще делает сумасшедшие, сумасшедшие, разбитые вещи с некоторым вводом, HTML-кодировкой некоторые знаки препинания на пути по неизвестной причудливой причине. И вы не можете отключить это.
Это, наряду с неработающим манипулятором «анти-XSS», заставляет меня поверить, что команда CodeIgniter плохо понимает, как на самом деле работают экранирование строк и проблемы безопасности. Я бы никогда не поверил в то, что они говорят о безопасности.