Шифрование Расшифровка сессий

1

У меня есть этот код, который хранит сеансы внутри базы данных.

public function read($id)  
{
   // $id=rtrim(@mcrypt_decrypt(MCRYPT_BLOWFISH, 'qwerty', base64_decode($id), MCRYPT_MODE_CBC,  md5(md5('protect me')) ),'\0');

    $result = mysqli_query($this->link,"SELECT Session_Data FROM Session WHERE Session_Id = '".$id."' AND Session_Expires > '".date('Y-m-d H:i:s')."'");
    if($row = mysqli_fetch_assoc($result)){
        return $row['Session_Data'];
    }else{
        return "";
    }
}


public function write($id, $data)
{
    //$id=@base64_encode(mcrypt_encrypt(MCRYPT_BLOWFISH, 'qwerty', $id, MCRYPT_MODE_CBC, md5(md5('protect me'))));
    $DateTime = date('Y-m-d H:i:s');
    $NewDateTime = date('Y-m-d H:i:s',strtotime($DateTime.' + 1 hour'));
    $result = mysqli_query($this->link,"REPLACE INTO Session SET Session_Id = '".$id."', Session_Expires = '".$NewDateTime."', Session_Data = '".$data."'");
    if($result){
        return true;
    }else{
        return false;
    }
}

В приведенном выше коде я прокомментировал строки шифрования и дешифрования, которые фактически шифруют и дешифруют $ id перед хранением в базе данных или чтением из базы данных.

Что именно происходит, так это то, что когда я не делаю этого процесса шифрования и дешифрования. Сессии работают точно так, как должны, но если бы я должен был выполнить этот процесс, данные сеанса, которые будут храниться внутри, заменяются текущим сеансом.

Чтобы уточнить мой вопрос

У меня есть два php файла

1) test1.php

<?php

require_once('inc.session.php');

session_start();

   $_SESSION['var1'] = "My Portuguese text: SOU Gaucho!";
?>

2) test2.php

<?php
//page 2
require_once('inc.session.php');

 session_start();
$_SESSION['wef']="abbaba";

if(isset($_SESSION['var1'])){
echo $_SESSION['var1'];
  }
 ?>

База данных:

Изображение 174551

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

  • 0
    Вы можете зарегистрировать var1 перед расшифровкой session_id, и когда вы загружаете session_id в качестве текущего сеанса, var1 просто удаляет, потому что это не тот же сеанс. Но я просто предсказываю. Не могли бы вы поделиться своей полной базой кода, связанной с этим процессом. Не ясно.
Теги:
encryption
session

1 ответ

1

Прежде чем вы начнете писать криптографический код (например, шифрование), вы должны попытаться узнать о безопасности приложений:

Почему вы вообще шифруете свой идентификатор сеанса в базе данных? С кем вы его скрываете? Просто храните его оптом.

  • 0
    Я шифровал идентификатор сессии, так как думал, что это может предотвратить перехват сессии
  • 0
    Я попытался подготовить заявление на моем php-коде, но это дает мне следующую ошибку. Не могли бы вы взглянуть на это: stackoverflow.com/questions/35263758/prepare-not-defined
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню