人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

URLリクエストでトランザクションIDを投げる際どのような形式のトランザクションIDで投げるのが良いのでしょうか?
数値で投げると連番を予測されてしまうと思います。
一般的な方法や良い方法を教えてください。
数値の例)http://hoge.jp/hoge?id=12345

●質問者: kunitz
●カテゴリ:コンピュータ
✍キーワード:URL トランザクション リクエスト 予測
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● aki73ix
●20ポイント

http://www.atmarkit.co.jp/flinux/rensai/fs04/fs04a.html

@IT:ext3とトランザクション処理(1/2)

確かに連番にすると予想されてしまいますから、数値をスクランブルしてみてはいかがでしょうか?

まず、DES暗号をかけた上で 行列演算でBitの入れ替えを行って 16進数表示してしまえば、その場で解読するのは難しいでしょう

それほど厳密でなくて良いのであれば、単純にBit演算だけで XOR、BIT交換したものを表示すればいいと思います

暗号化の要素に日付や時間を入れてTimeOutさせてやるとセキュリティ的にも強固なものが出来ると思います

数値の例)

http://foo.jp/bar?tid=a512e29034

64進数にして mime で表記するのもいいかも

http://foo.jp/bar?tid=fD1ze9EhKa

◎質問者からの返答

ありがとうございます!


2 ● upride
●20ポイント

http://www.atmarkit.co.jp/aig/02security/hashfunction.html

セキュリティ用語事典[ハッシュ関数]

トランザクションID = ユニークキーということでしたら

MD5 によるハッシュではどうでしょうか?

http://php.s3.to/man/function.md5.html

md5

もし言語がPHPでしたらこちらをどうぞ

標準でハッシュ関数準備されてます

◎質問者からの返答

ありがとうございます!


3 ● ohmix1
●20ポイント

http://www.atmarkit.co.jp/fsecurity/rensai/webhole03/webhole01.h...

@IT:Webアプリケーションに潜むセキュリティホール(3)

暗号化するとしても、IDが長くなければ総当りされる可能性があります。(上記URL参照)

長めハッシュ値(MD5やSHA1)を利用するのが一般的と思われます。

1.まず、ユーザID,時刻,乱数,その他固有情報から文字列を作る

2.文字列からハッシュ関数を利用してハッシュ地を生成する

3.ハッシュ値はバイナリなのでBASE64やHEXなどのエンコードで文字列に変換する

4.BASE64では/や+などの文字も使うので、さらにURLエンコードする

ハッシュ値から元の文字列には戻せないので、必要ならサーバ側で保持しておくこと

なお、具体的な言語等の指定がありませんでしたので、

一般的な参考情報を載せておきます。

参考:

http://www.verisign.co.jp/server/help/faq/110095/

MD5 から SHA1 へアルゴリズムを変更する理由は何でしょうか

http://www.sea-bird.org/doc/Cygwin/BASE64enc.html

BASE64 について

http://www.big.or.jp/~knight/improve/knowledge/point.html

「URLエンコード」

◎質問者からの返答

ありがとうございます!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ