Избегайте использования определенных символов во время шифрования в кодеригенере?

Мне нужно передать зашифрованное значение через URL. Есть ли способ избежать некоторых символов, таких как слэш (/) в значении, которое мы получаем после шифрования? Потому что в codeigniter для разделения параметров в URL используется символ, такой как слэш. Обратите внимание, что я не хочу, чтобы какое-либо предложение не передавало зашифрованную строку в URL 🙂

Related of "Избегайте использования определенных символов во время шифрования в кодеригенере?"

То, что вы хотите, – это не шифрование (подразумевающее безопасность), а кодирование. На практике ваши варианты в основном:

  • urlencode (используйте это, если вы хотите, чтобы строка была несколько разборчивой. Это также даст вам более короткую строку, чем две другие опции)
  • base64 (используйте это, если вы не хотите, чтобы строка была разборчивой, а также хотите сохранить пространство в своей строке)
  • hex (используйте это, если вы не хотите, чтобы строка была разборчивой, и вам не нужна длина строки)

Я бы не выбрал гекс. Решите, хотите ли вы, чтобы строка была разборчивой и сначала выберите одну из двух.

Используйте функцию urlencode PHP после шифрования: http://php.net/manual/en/function.urlencode.php и используйте urldecode в скрипте, который обрабатывает данные GET.

 class MY_Encrypt extends CI_Encrypt { function encode($string, $key="", $url_safe=TRUE) { $ret = parent::encode($string, $key); if ($url_safe) { $ret = strtr( $ret, array( '+' => '.', '=' => '-', '/' => '~' ) ); } return $ret; } function decode($string, $key="") { $string = strtr( $string, array( '.' => '+', '-' => '=', '~' => '/' ) ); return parent::decode($string, $key); } } 

 $key = $this->config->item('encryption_key'); $outboundlink = urlencode( $this->encrypt->encode($segment, $key, TRUE) ); $inboundlink = rawurldecode( $this->encrypt->decode( $segment, $key) ); 

Одна идея состоит в том, чтобы представлять зашифрованную строку как hex, используя только 0-9 и af и необязательно x.

Но я предлагаю вам использовать TLS (лучший SSL) для защиты ваших данных, потому что теперь вы, вероятно, шифруете данные с помощью JS, так что клавиши видны злоумышленнику.

Не вызывайте текущую схему безопасности или шифрование, а просто обфускацию.

это не правильный метод, но он может вам очень помочь. Для этого я сделал несколько альтернативных методов.

 <html> <a href="<?= base_url('controller/category/').$this->encrypt->encode($category_men_top->category_id);?>">Category Name</a> </html> public function category() { $count=$this->uri->total_segments(); //getting total number of segment $id=''; //assigning value for ($i=3; $i<=$count ; $i++) { $id=$id.$this->uri->segment($i).'/'; } $id=rtrim($id,"/"); // removing '/' from the end of the whole string echo "$id"; echo "<br>"; echo $this->encrypt->decode($id); }