Хобрук: Ваш путь к мастерству в программировании

В отправленном вами URI есть недопустимые символы. кодировать var в URL

У меня есть регистрационная форма в моем приложении. Когда кто-то завершит регистрацию, вы получите электронное письмо со ссылкой для подтверждения регистрации (типичная ситуация).

Ссылка примерно такая

http://www.myDomain.com/registration/validation/m0NQGT4XzQgId5zuH/1PrDqNSP7YWq81Mba8cSXLb1WsQ5aVqf2sQ3Ece3ZdmxYvLjztaGp7Xmhv8ArjFET/8Q==

  • регистрация является контроллером
  • валидация это функция
  • и последнее имя пользователя

Кодировка имени пользователя:

$encrypted_username = $this->encrypt->encode($username);

Но при доступе к ссылке возвращается следующая ошибка

В отправленном вами URI есть недопустимые символы.

При настройке $config['permitted_uri_chars'] = ''; все идет как надо, но говорят, что так делать нельзя.

Итак, как я могу решить эту проблему правильно?

21.12.2012

  • как насчет использования чего-то без / в пути? Может быть, что-то вроде хэша MD5? -- продолжение: я нашел этот ответ об использовании base64 в URL-адресах. 21.12.2012
  • ты очень много, я сделал это и работал. Я думаю, что MD5 не так безопасен в наши дни. Я думаю, что если я использую этот фреймворк, я должен работать с утилитами этого фреймворка. ты 21.12.2012

Ответы:


1

Я изменил свой config.php на

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

и теперь работает нормально, я надеюсь, что это безопасное решение.

21.12.2012
  • Наверняка это безопаснее, чем оставить его пустым, как я видел в других постах. 09.06.2018

  • 2

    вы можете создать помощник для кодирования и декодирования строки URL-адреса следующим образом.

    1) создайте один вспомогательный файл в папке приложения/помощника и вставьте ниже вспомогательную функцию кодирования.

    <?php
    
    /**
     * Encodes a string as base64, and sanitizes it for use in a CI URI.
     * 
     * @param string $str The string to encode
     * @return string
     */
    function url_base64_encode($str = '')
    {
        return strtr(base64_encode($str), '+=/', '.-~');
    }
    
    /**
     * Decodes a base64 string that was encoded by url_base64_encode.
     * 
     * @param object $str The base64 string to decode.
     * @return string
     */
    function url_base64_decode($str = '')
    {
        return base64_decode(strtr($str, '.-~', '+=/'));
    }
    

    2) тогда вы можете использовать эти функции в качестве альтернативы основным функциям, таким как base64_encode() и base64_decode().

    10.01.2018
    Новые материалы

    Учебные заметки JavaScript Object Oriented Labs
    Вот моя седьмая неделя обучения программированию. После ruby ​​и его фреймворка rails я начал изучать самый популярный язык интерфейса — javascript. В отличие от ruby, javascript — это более..

    Разбор строк запроса в vue.js
    Иногда вам нужно получить данные из строк запроса, в этой статье показано, как это сделать. В жизни каждого дизайнера/разработчика наступает момент, когда им необходимо беспрепятственно..

    Предсказание моей следующей любимой книги 📚 Благодаря данным Goodreads и машинному обучению 👨‍💻
    «Если вы не любите читать, значит, вы не нашли нужную книгу». - J.K. Роулинг Эта статья сильно отличается от тех, к которым вы, возможно, привыкли . Мне очень понравилось поработать над..

    Основы принципов S.O.L.I.D, Javascript, Git и NoSQL
    каковы принципы S.O.L.I.D? Принципы SOLID призваны помочь разработчикам создавать надежные, удобные в сопровождении приложения. мы видим пять ключевых принципов. Принципы SOLID были разработаны..

    Как настроить Selenium в проекте Angular
    Угловой | Селен Как настроить Selenium в проекте Angular Держите свое приложение Angular и тесты Selenium в одной рабочей области и запускайте их с помощью Mocha. В этой статье мы..

    Аргументы прогрессивного улучшения почти всегда упускают суть
    В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

    Введение в Джанго Фреймворк
    Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..