2012-04-28 3 views
1

У меня есть ссылка, которая выглядит примерно так:CodeIgniter URL название специальные символы ошибки

www.localsite.dev/posts/332635955335419755 

, который работает очень хорошо, и я могу видеть сообщение с ID = 332635955335419755

, но когда я пытаюсь добавить некоторые его URL-адрес URL-адреса для более симпатичных URL-адресов ... Codeigniter покажет мне ошибку 404 страницы, если у нее есть специальные символы ... на самом деле это не произойдет, если вы не попробуете XSS или и так далее ... я не получаю XSS'ed или просто выбросить ошибку 404 страницы, и если я удалю текст после ID, он будет работать нормально ...

www.localsite.dev/posts/332635955335419755/<SCRIPT SRC=http://ha.ckers.org/xss.js></SCRIPT> 

так как я могу убедиться, что не получить ошибку 404, если у пули есть эти символы?

+0

В чем вопрос? – Adam

+0

Как я могу убедиться, что я не получу ошибку 404, даже если я использую второй URL с этим текстом? – fxuser

ответ

1

Ваш вопрос не в том, как предотвратить 404, это о том, как сделать защищенные URL-адреса.

Посмотрите на following page from the user guide, вы можете использовать xss_clean() и/или sanitize_filename() для удаления опасных символов из строки. Вероятно, вы захотите сделать это, прежде чем вставлять свои данные в db или когда создается пул.

Есть также the url_title() method, но я не уверен, как это будет обрабатывать строку xss. В идеале вы бы использовали комбинацию из всех трех методов - протестируйте ее.

Как только вы это сделаете, вам все равно придется изменить $config['permitted_uri_chars'], чтобы разрешить все эти два метода защиты, но по крайней мере он должен быть более безопасным.

0

Изменение config.php

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

в

$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-<>/'; 

НО - вы действительно очень не хочу, чтобы сделать это - это открывает вам до МАССИВНЫХ вопросов безопасности. Вы должны пересмотреть свой подход к проблеме. Я предлагаю вам использовать flash_message с текстом или даже _POST. Использование URL-адреса для обработки такого текста просто приведет к ошибкам и ошибкам на дорожке ...

+0

, так что, если пользователь действительно пишет сообщение, содержащее '', тогда я получу ошибку codeigniter из-за разрешенных символов uri ... isnt это неправильно? должно ли это быть загружено в URL? или его лучше удалить открытые теги, например, и т. д., так что пул будет чистым. – fxuser

+0

Все сводится к тому, как ваши данные передаются вокруг ваших контроллеров. Если вы сделаете это через URL-адрес, то я думаю, что вы столкнетесь с проблемами с URL-адресами, такими как выше. Вы должны просто заставить пользователей просмотреть идентификатор, который у вас был (первая ссылка), а затем сгенерировать любые дополнительные данные через ваши представления + переменную, проходящую + _POST и т. Д. – Laurence

+0

ну, я думал добавить слизняки из-за лучшего SEO (?) ... если там это один шанс, что может произойти <>, потому что я не могу контролировать, что пользователи публикуют ... я буду придерживаться идентификаторов и посмотреть, как я буду иметь дело с ним позже ... – fxuser

Смежные вопросы