[PHP-users 11849] Re: PHPバージョンによる相違

Osamu Shigematsu php-users@php.gr.jp
Thu, 28 Nov 2002 00:47:55 +0900


重松です。こんにちは。

On Wednesday, Nov 27, 2002, at 23:53 Asia/Tokyo, Ryotaro Shimazu wrote:

>> 全くその通りです。
>> hiddenで変数を渡す場合、配列にした値をserialize、圧縮、urlencode
>> しmessage digest方式で改竄チェックをするsecure_serialize
>> 関数という関数を作ってチェックしています。ずいぶん前に、zend.com
>> のCode Exchangeにポストしているコードと仕組みは同じです。
>
> の部分なのですが、ただただ、ここまでチェックするのかとびっくりしているの
> ですが、是非勉強したいと思っています。
>
> 自分なりにzend.comを探してみたのですが、
> http://www.zend.com/codex.php
> のどこかに、そのコードはあるのでしょうか? それとも全然別のところでしょ
> うか?
>
> 宜しければ、コード名か、ダウンロードできるURLを教えていただけますと幸い
> です。

私もつい最近この手法を使いましたが、まあ、イントラなので、圧縮は行っていません。

// confirm.php
$pdata = serialize($data);
$magic = md5(md5('qwerty') . md5($pdata)); // パスワードは隠すべし
$pdata = base64_encode($pdata);

$html->register('pdata',$pdata); // 自作テンプレートクラスに登録
$html->register('magic',$magic);
print $html->parse();

// submit.php
$pdata = @base64_decode($_POST['pdata']);
if(!$pdata) break;
$data = unserialize($pdata); // 復元処理

// ハッシュをチェック
$magic = md5(md5('qwerty') . md5($pdata)); // パスワードは隠すべし
if($pdata && $magic != $_POST['magic']){
	trigger_error('不正な値が送信されました。');
}

こんな感じで多少は参考になりますでしょうか?

-- 
Osamu Shigematsu