1

(Flash Uploaderを使用して)PostRequestを介してユーザーセッションIDを送信する必要があります。プロジェクトはZendFrameworkに基づいています。

今、私の実装が「安全」であるかどうかわからない:

意見

var session = "<?= Anon_SimpleCrypt::encrypt(Zend_Session::getId(), 'SOME_KEY'?>";

コントローラ:

   $sessionId = $_POST['SESSION_ID'];
   $sessionId = Anon_SimpleCrypt::decrypt($sessionId, 'SOME_KEY'); 
   Zend_Session::setId($sessionId);

暗号化/復号化:

    public static function encrypt($value, $encryptionKey) 
    {
        $result = '';
        $encryptionKey = $encryptionKey . self::getSalt($value);

        for ($count = 0; $count < strlen($value); $count++) {
            $char = substr($value, $count, 1);
            $keychar = substr($encryptionKey, ($count % strlen($encryptionKey)) - 1, 1);
            $char = chr(ord($char) + ord($keychar));
            $result.=$char;
        }

        return base64_encode($result);
    }

    public static function decrypt($value, $encryptionKey) 
    {
        $result = '';
        $value = base64_decode($value);

        $encryptionKey = $encryptionKey . self::getSalt($value);

        for ($i = 0; $i < strlen($value); $i++) {
            $char = substr($value, $i, 1);
            $keychar = substr($encryptionKey, ($i % strlen($encryptionKey)) - 1, 1);
            $char = chr(ord($char) - ord($keychar));
            $result.=$char;
        }

        return $result;
    }
4

1 に答える 1

0

セッションIDを暗号化する必要はありません。プレーンテキストで送信するだけです。セッションIDは通常、暗号化されずにクライアントのCookieに保存されますが、これも例外ではありません。さらに、誰かが暗号化されたセッションIDを取得した場合でも、サーバー上で復号化するため、セッションを使用できます。

于 2012-07-08T12:55:51.480 に答える