0

私はCodeIgniterに次のクラスを持っています

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 
class ZoEncryption {

public $_CI;
public function __construct() {
    $this->_CI = & get_instance();
    $this->_CI->encrypt->set_cipher(MCRYPT_BLOWFISH);
    $this->_CI->encrypt->set_mode(MCRYPT_MODE_CBC);
}
function encode($str, $key) {
    return $this->_CI->encrypt->encode($str, $key);
}
function decode($str, $key) {
    return $this->_CI->encrypt->decode($str, $key);
    }
}

?>

データベース内のユーザー コンテンツを暗号化および復号化するために、ci アプリケーションでこのライブラリを使用しています。暗号化/復号化に特定のロジックを持たせたいので、暗号とモードを指定しています。この変更のコーディングが将来的に驚かされることはありません。

また、PHP 5.5 の新しいパスワード ハッシュ スキーマを早期に実装するために、 password_compatライブラリを使用しています。

このライブラリを使用すると、PHP の将来に基づいてユーザー パスワード ハッシュ ロジックを構築できます。

コンストラクターで暗号とモードを設定せず、関連する行をベースコントローラーコンストラクターに配置しないと、パスワードハッシュが機能しません。

具体的には、MY_Controller に次の 2 行を追加すると、パスワードの検証が機能しません。

次の行は CI 全体に影響しますか?

$CI->encrypt->set_cipher(MCRYPT_BLOWFISH);

$CI->encrypt->set_mode(MCRYPT_MODE_CBC);
4

1 に答える 1

1

いいえ、グローバル設定は変更されません。定義した場所に直接アタッチされたコードにのみ影響します。

変更をグローバルにしたい場合は、コアをハックするか、ライブラリを作成するか、コアをオーバーライド/拡張​​する必要があります。

于 2013-04-08T21:02:44.703 に答える