1

データベース テーブルに download_key という名前のフィールドがあります。通常は暗号化されずにテーブルに保存されます。このキーをフォームの隠し値として送信しています。誰かがページを右クリックしてページのソースを表示すると、キーが表示されます。ビューのみで暗号化することは可能ですか? また、キーの非表示の値をデータベースに保存されている値と比較しています。

いくつかのコード

コントローラ

$query = $this->db->get_where('mc_boxes', array('idmc_boxes' => $id));
$row = $query->row();
$data['download_key'] = strtolower($row->downloadkey);

私の視界の中で

<form name="form" method="post" onsubmit="return validateForm('<?php echo $download_key ?>')"> 
    <input type="hidden" name="key" value="<?php echo $download_key ?>" />
</form>
4

5 に答える 5

2

セッションを使ってみませんか?

$_SESSION['DL_KEY'] = strtolower($row->downloadkey);

そしてそれを形でエコーする必要はありません

于 2012-08-06T09:14:42.127 に答える
2

利用可能な暗号化/復号化関数があります - http://codeigniter.com/user_guide/libraries/encryption.htmlをご覧ください。

$msg = 'My secret message';
$key = 'super-secret-key';

$encrypted_string = $this->encrypt->encode($msg, $key);

$encrypted_string = 'APANtByIGI1BpVXZTJgcsAG8GZl8pdwwa84';

$plaintext_string = $this->encrypt->decode($encrypted_string);

これがあなたの場合に役立つかどうかを確認してください。:)

于 2012-08-06T09:37:00.630 に答える
1

キーで可逆暗号化を使用してみてください(これは構成内にのみあり、他の人からは隠されています)。

$key = 'YOUR_UNIQUE_KEY_HERE';
$phrase = 'PHRASE_TO_DECODE_OR_ENCODE';
if ($method == 'encode')
    return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $phrase, MCRYPT_MODE_ECB, mcrypt_create_iv(32, MCRYPT_RAND)));
else if ($method == 'decode')
    return trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, base64_decode($phrase), MCRYPT_MODE_ECB, mcrypt_create_iv(32, MCRYPT_RAND)));
于 2012-08-06T09:15:59.343 に答える
0

関数md5を見てください。これは、ネイティブの php 関数です。codeigniter とは何の関係もありません。

string md5 ( string $str [, bool $raw_output = false ] )関数シグネチャです。

于 2012-08-06T09:15:42.403 に答える
0

次のような形式でキーを印刷します。

    echo $this->encrypt->encode($download_key); 

次に、データベースに挿入される前に、次の操作を行います。

    $download_key = $this->encypt->decode($download_key);

于 2012-08-06T09:19:16.290 に答える