Code Igniter: разрешить апостроф в URI, в то же время в зависимости от привязок запросов для безопасности - PullRequest
1 голос
/ 16 июня 2011

Я выяснил, как разрешить апострофу пересекать URI.

Я создаю сайт, который позволяет пользователям «создавать фотоальбомы».У меня есть ссылка, при нажатии на которую он загружает и отображает все содержимое определенного альбома.Я использую codeigniter, поэтому эта страница называется следующим образом:

http://www.fourthdraft.com/index.php/admin/manageAlbumContents/dan's/91

admin = контроллер managealbums = функция dan's (название альбома) = переменная

Как вы знаете, codeigniter не допускает апострофа(') в Ури.Мои проблемы:

  1. Если я htmlspecialchars / htmlentities, то название альбома становится & # xx;Эти новые символы также не разрешены
  2. Если я закодирую URL, он станет% xxпроценты разрешены, но codeigniter url-кодирует его перед обработкой, поэтому он просто возвращается к апострофуработать и утомительно, так как у меня есть готовый веб-сайт на 80%, и строки, которые я должен заменить, есть везде.
  3. Я также рассмотрел использование base64_encode.Это занимает больше места, но это делает работу.С другой стороны, зашифрованная версия содержит '=', что также запрещено

В максимально возможной степени я не хочу просто добавлять апостроф в список разрешенных символов в конфигурационном файле codeigniter.Я считаю, что у них нет этого по причине.В то же время у меня заканчиваются варианты.Причина, по которой нужно разрешить апостроф, заключается в том, что в этом контексте он обязательно должен использоваться.Например, что если кто-то решит добавить «день рождения Дана» в качестве названия альбома?Это обязательно произойдет.и я уверен, что мои пользователи будут жаловаться.Даже если мне удастся убедить их в обратном, чем я заменю это?dan_s день рождения?выглядит неправильно.Кроме того, если Facebook может сделать это, я тоже должен.По крайней мере, если Facebook это сделал, то это значит, что есть выход.

Если у вас, ребята, есть какие-либо предложения, откажитесь.В противном случае мне интересно, нормально ли (и безопасно) просто разрешить апостроф в разрешенных символах URI.Я знаю, что это ОЧЕНЬ опасно для mysql, которым я часто пользуюсь, но я только что вспомнил, что переменные привязки запроса codeigniter автоматически экранируют символы.Мне интересно, хватит ли этого и сохранит ли я меня в безопасности.

В противном случае, пожалуйста, пожалуйста, дайте мне хорошую идею.Я истощен

1 Ответ

0 голосов
/ 16 июня 2011

Мне нравится верить, что дни mysql_query("SELECT * FROM table WHERE x={$_GET['val']}") прошли. Тем не менее, это нормально с любой приличной библиотекой базы данных, если вы используете привязку параметров. Так что давай и используй urlencode.

...