codeigniter disallowed characters error-Collection of common programming errors
Yeah, if you want to allow non-ASCII bytes you would have to add them to permitted_uri_chars
. This feature operates on URL-decoded strings (normally, unless there is something unusual about the environment), so you have to put the verbatim bytes you want in the string and not merely %
and the hex digits. (Yes, I said bytes: _filter_uri
doesn’t use Unicode regex, so you can’t use a Unicode range.)
Trying to filter incoming values (instead of encoding outgoing ones) is a ludicrously basic error that it is depressing to find in a popular framework. You can turn this misguided feature off by setting permitted_uri_chars
to an empty string, or maybe you would like a range of all bytes except for control codes ("\x20-\xFF"
). Unfortunately the _filter_uri
function still does crazy, crazy, broken things with some input, HTML-encoding some punctuation on the way in for some unknown bizarre reason. And you don’t get to turn this off.
This, along with the broken “anti-XSS” mangler, makes me believe the CodeIgniter team have quite a poor understanding of how string escaping and security issues actually work. I would not trust anything they say on security ever.
Originally posted 2013-11-09 21:44:07.