[PHP-dev 662] Re: hiddenフィールドの検証コードの実装

Hiroyuki Toda php-dev@php.gr.jp
Tue, 10 Dec 2002 00:20:43 +0900


どうもこんにちわ 戸田@日本ノーベルです。
コードをいきなり送りつけておいて返答が遅れてしまいました。すいません。


2002/12/06 01:03:58頃の重松さんからのメールです。
(Subject: [PHP-dev 659] Re: hiddenフィールドの検証コードの実装 )

Osamu> 個人的には、
Osamu> 
Osamu> 	$serialized_value = serialize_secure($value, $password);
Osamu> 
Osamu> 	
Osamu> のようなものがあればいいなと思います。

serialize_secureのアルゴリズムが今一理解できないのですが、
私がvalidate_code_md5を作成したときにはあくまでも、
改ざん・偽造されたくないフィールドの改ざん検知を行うという
機能に特化することに留意しました。

確かにSSLで通信路を暗号化すれば、第三者からの改ざん・偽造は
通常防げます。しかしながら、通信路を暗号化したとしても、
peer自体での改ざん・偽造には対応できません。これが私が
validate_code_md5を作成した理由です。

暗号化を行わない場合においては、hiddenフィールドは第三者に
見られることを前提としなければいけません。であるのであれば、
やっぱり改ざん・偽造の検知方法を提供すればことは足りると考えています。



Osamu> 	<input type="hidden" name="hidden_field" value="<?=$seialized_value?>">
Osamu> 
Osamu> 	$value = @unserialized_secure($_POST['hidden_field'], $password);
Osamu> 	if($value === null){ // こういうことってできましたっけ?
Osamu> 		// エラー処理
Osamu> 	}

これはあくまでも私見ですが、暗号化を行った場合、その復号時に正しく
復号化できたかどうかの検証が必要であると思いますが、暗号化アルゴリズム
自体にその検証機能が無い場合(例えばROT13 :-P)、どこかに正しい情報を
記録しておかなければいけません。はっきり言ってこれは二度手間かなと
思ったりするのですがいかがでしょう?



現在、validate_code_md5をもう少し便利に使うための補助関数的な
(ユーザ定義)関数を作成中です。また、validate_code_md5自体の
改良も計画中です。それらができましたらまた投稿したいと思います。

ご意見・ご要望などは今後もお待ちしておりますので、ぜひご意見を
お聞かせください。



それでは戸田@日本ノーベルでした。