Разрешение любого символа в URL в CodeIgniter - PullRequest
5 голосов
/ 13 ноября 2010

Я использую PHP-фреймворк CodeIgniter. Я использую JS для динамической загрузки страницы PHP:

$('someIFrame').writeAttribute(
   'src',
   '/index.php/controller/method/' +
   escape(userGeneratedString)
);

Когда я запустил это, CodeIgniter дал мне эту ошибку:

http://192.168.0.81/index.php/controller/method/dude%27s%20face
An Error Was Encountered
The URI you submitted has disallowed characters.

Это полностью не соответствует действительности, поскольку рассматриваемый URL не содержал запрещенных символов. Мой конфигурационный файл разрешает все символы, присутствующие в этом URL:

$config['permitted_uri_chars'] = 'a-z 0-9~%.:_()@\-';

Так что я расстроился и позволил всем символам предотвратить ошибку.

// Leave blank to allow all characters -- but only if you are insane.
// DO NOT CHANGE THIS UNLESS YOU FULLY UNDERSTAND THE REPERCUSSIONS!!
//$config['permitted_uri_chars'] = 'a-z 0-9~%.:_()@\-';
$config['permitted_uri_chars'] = '';

Предупреждающее сообщение над этой строкой звучит страшно. Что может пойти не так, позволив всем персонажам? Буду ли я взломан?

1 Ответ

6 голосов
/ 13 ноября 2010

URL в codeigniter urldecoded , поэтому %27 преобразуется в ', которого не было в вашем списке разрешенных символов, и, следовательно, вызвало ошибку Так что вам нужно разрешить символы один раз декодировать . Другими словами, к тому времени, когда codeigniter видит вас %27, он уже декодируется в '.

Источник

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