Arhn - архитектура программирования

Обходной путь для запрещенных символов Codeigniter

Я уже проверил довольно много других ответов, но безрезультатно.

Меня наняли исправлять ошибки для работы, от которой сбежал какой-то другой разработчик. Приложение имеет функцию добавления и удаления комментариев.

Проблема возникает в части удаления комментария. Он разработал базу данных таким образом, что все комментарии просто вводятся в одну ячейку, разделенную вертикальной чертой. Таким образом, при удалении комментария весь комментарий должен быть помещен в URL-адрес в качестве параметра, который затем передается в модель и удаляется из базы данных.

Я знаю, что это плохо, но я не могу перекодировать весь функционал.

Теперь, когда пользователь вводит комментарий, например "Что нового?", URL-адрес удаления комментария выдает сообщение "Codeigniter: отправленный вами URI содержит запрещенные символы". ошибка.

Я попытался преобразовать кавычки в объекты символов HTML, но они снова содержат запрещенные символы.

Может ли кто-нибудь предложить возможное решение этой проблемы? Перепроектирование базы данных не является жизнеспособным вариантом, так как мне придется изменить обширный php-код, используемый для обработки различных разделителей. Возиться со списком запрещенных персонажей тоже кажется плохой идеей.

Спасибо.


Ответы:


1

Я не уверен, что htmlentities поможет. Вы сначала вызвали urlencode только для параметров?

<?php

$query_string = 'foo=' . urlencode("What's Up?");
echo '<a href="mycgi?' . htmlentities($query_string) . '">';

?>

<a href="mycgi?foo=What%27s+Up%3F">

Также проверьте, нужно ли вам добавлять escape-символы к любому из них, если они рассматриваются базой данных как специальные символы.

например Если % рассматривается как специальный символ, вам может потребоваться добавить перед ним \.

04.10.2014
  • Да, это сработало! пришлось немного поиграться с функциями. 04.10.2014

  • 2

    Откройте файл конфигурации и найдите этот параметр:

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

    Вы можете изменить его в соответствии с вашими требованиями или оставить пустым.
    Прочтите раздел комментариев в файле конфигурации.

    Там написано: Leave blank to allow all characters -- but only if you are insane.

    04.10.2014
  • Я упоминал в своем вопросе, что возиться с этой конфигурацией может быть плохой идеей. Любое другое обходное решение? 04.10.2014
  • это конфигурационный файл codeigniter. Если вы добавите новый символ в параметр permitted_uri_chars, это не повлияет на вашу старую кодировку. он просто разрешает символ в URL. 04.10.2014
  • Приложение уже показывает признаки плохой практики кодирования. Если я разрешаю символы одинарной кавычки в URL-адресе, не откроет ли он двери для попыток внедрения sql. 04.10.2014
  • в этом случае используйте метод rawurlencode для шифрования URL-адреса и разрешите связанный с ним символ в параметре permitted_uri_chars. 04.10.2014
  • Да, я делал что-то подобное. Использована цепочка urlencode/urldecode и разрешен символ + в конфиге. 04.10.2014
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..