Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: шифровка данных mcrypt с последующей передачей информации на другую страницу
 
 автор: Dazzl   (13.02.2012 в 12:24)   письмо автору
 
 

Здравствуйте, значит такие дела шифрую и расшифровываю данные при помощи:

<?php 
 $iv_size 
mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256MCRYPT_MODE_ECB); 
  
$iv mcrypt_create_iv($iv_sizeMCRYPT_RAND); 
  
$key "очень секретный ключ"
  
$text 27

  
// Шифруем 
  
$crypttext mcrypt_encrypt(MCRYPT_RIJNDAEL_256$key$textMCRYPT_MODE_ECB$iv); 
  echo 
$crypttext."<br />"
  
// Расшифровываем 
  
$text mcrypt_decrypt(MCRYPT_RIJNDAEL_256$key$crypttextMCRYPT_MODE_ECB$iv); 
  echo 
$text."<br />"
?>


Все отлично, тока когда расшифровывающие данные подвергаешь htmlspecialchars то вообще нечего не происходит, просто пустая страница, как убираю htmlspecialchars все ок работает, что не так? так нельзя делать?

  Ответить  
 
 автор: cheops   (13.02.2012 в 12:28)   письмо автору
 
   для: Dazzl   (13.02.2012 в 12:24)
 

>тока когда расшифровывающие данные
1. Имеется в виду $crypttext или $text?
2. Как применяется htmlspecialchars()? Присвоением переменной
$crypttext = htmlspecialchars($crypttext);
или непосредственным выводом
echo htmlspecialchars($crypttext);

  Ответить  
 
 автор: Dazzl   (13.02.2012 в 13:35)   письмо автору
 
   для: cheops   (13.02.2012 в 12:28)
 

С одной страница отправляется зашифрованые данные:

<?php  
 $iv_size 
mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256MCRYPT_MODE_ECB);  
  
$iv mcrypt_create_iv($iv_sizeMCRYPT_RAND);  
  
$key "очень секретный ключ";  
  
$text 27;  

  
$crypttext mcrypt_encrypt(MCRYPT_RIJNDAEL_256$key$textMCRYPT_MODE_ECB$iv);

?>
Принимающая страница такая:

<?php 
 $crypttext 
htmlspecialchars($_REQUEST['info']);
 
$iv_size mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256MCRYPT_MODE_ECB);  
  
$iv mcrypt_create_iv($iv_sizeMCRYPT_RAND);  
  
$key "очень секретный ключ";  
 
  
$text mcrypt_decrypt(MCRYPT_RIJNDAEL_256$key$crypttextMCRYPT_MODE_ECB$iv);  
  echo 
$text;  

?>
если пишу echo htmlspecialchars($text); то ничего не происходит,

  Ответить  
 
 автор: Sfinks   (13.02.2012 в 14:02)   письмо автору
 
   для: Dazzl   (13.02.2012 в 13:35)
 

> $crypttext = htmlspecialchars($_REQUEST['info']);
Эта строка у вас зачем? Вы же зашифрованную строку перековеркиваете! Поэтому она и раскодироваться не может.
Просто:
 $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);   
  $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);   
  $key = "очень секретный ключ";   
  
  $text = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $crypttext, MCRYPT_MODE_ECB, $iv);   
  echo htmlspecialchars($text); 

И, кстати, как показывает практика, после раскодирования в строке часто появляются лишние пробельные символы. Поэтому не мешает сделать
$text = trim($text);
после mcrypt_decrypt();

  Ответить  
 
 автор: Dazzl   (13.02.2012 в 14:26)   письмо автору
 
   для: Sfinks   (13.02.2012 в 14:02)
 

Вы же зашифрованную строку перековеркиваете!

а если я защититься хочу?

  Ответить  
 
 автор: cheops   (13.02.2012 в 14:45)   письмо автору
 
   для: Dazzl   (13.02.2012 в 14:26)
 

Защититься от чего, от XSS-инъекции? В любом случае htmlspecialchars() защитит вас только при выводе в окно браузера, поэтому лучше использовать вариант с echo, как описал выше Sfinks. При расшифровке вы должны подставлять данные без искажений.

  Ответить  
 
 автор: Dazzl   (13.02.2012 в 14:49)   письмо автору
 
   для: cheops   (13.02.2012 в 14:45)
 

$info = $_REQUEST['info'];
Значит в переменную $info мне могут прислать что угодно и воспрепятствовать не получиться?

  Ответить  
 
 автор: cheops   (13.02.2012 в 15:01)   письмо автору
 
   для: Dazzl   (13.02.2012 в 14:49)
 

Вы можете проверить, что возвращает mcrypt_decrypt(), если это пустая строка, значит прислали явно попорченные данные.

  Ответить  
 
 автор: Dazzl   (13.02.2012 в 15:09)   письмо автору
 
   для: cheops   (13.02.2012 в 15:01)
 

ясно. спс

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования