[PHP-users 11851] Re: PHPバージョンによる相違
Naofumi Kondoh
php-users@php.gr.jp
Thu, 28 Nov 2002 08:04:30 +0900
ソフト工房の近藤です。こんにちは。
# 話が元の Subject からずれますが。
Osamu Shigematsu wrote:
> 重松です。こんにちは。
>
> On Wednesday, Nov 27, 2002, at 23:53 Asia/Tokyo, Ryotaro Shimazu wrote:
>
>>> 全くその通りです。
>>> hiddenで変数を渡す場合、配列にした値をserialize、圧縮、urlencode
>>> しmessage digest方式で改竄チェックをするsecure_serialize
>>> 関数という関数を作ってチェックしています。ずいぶん前に、zend.com
>>> のCode Exchangeにポストしているコードと仕組みは同じです。
私も、必要なオブジェクト(正確にはプロパティーだけ)を
配列に入れたものを seriralize して、md5 で改竄チェック
できるようにして hidden に入れる方式を使う事があります。
# 普通は、server 側にファイルしてしまうので、あまり
# 使うことはないですが。
圧縮はしていなかったのですが、回線が遅い時は効果があり
そうですね。今度テストしてみます。
-- snip --
> 私もつい最近この手法を使いましたが、まあ、イントラなので、圧縮は行ってい
> ません。
>
> // confirm.php
> $pdata = serialize($data);
> $magic = md5(md5('qwerty') . md5($pdata)); // パスワードは隠すべし
-- snip --
私は、
$magic = md5(KEY) . md5($pdata);
というように、くっつけるだけで、重松さんのように再度
md5 をかけるというようなことはしていません。 md5 の
結果に再度 md5 をかけると、どのようなメリットがあるか
お教え頂けると幸いです。
# md5だとばれにくくするために、前後と途中に記号や
# g - z の英字を適当に突っ込んだりはしますが。
あと、md5 の出力は 16進数になるので、これを base64
の用に ASCII CODE 64 文字に変換したいのですが、PHP で
書く場合、なにかうまい書き方はあるでしょうか?。
scanf で、16進文字列を、数値に変換して配列で文字を
ひっぱてくるというのはなんかスマートでないような気がして。
# C だと文字列の文字単位の処理が簡単なんですがね。
# PHP で、文字列変数を添え字で1バイトづつとりだす方式
# $mystr{$idx} は、推奨されない方法ですよね。
まああ、単に md5 でやってるなと一発で見抜かれないように
して、改竄の危険を一寸だけ回避できないかなという程度の
ことだけなんですが。
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
(株)ソフト工房 近藤直文 Email: nkon@shonan.ne.jp
http://www.SOFTKOUBOU.co.jp/ http://www.shonan.ne.jp/~nkon/
2002-11-28(木)19:00-21:30 第8回PostgreSQL業務アプリ分科会 勉強会
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/