- PR -

URL末尾に付くkeyのような文字列について

1
投稿者投稿内容
ぬるぴょん
ベテラン
会議室デビュー日: 2003/06/02
投稿数: 62
投稿日時: 2006-07-03 18:44
会議室の皆さん、お世話になっています。

よくメルマガ上に張ってある商品へのリンクやパスワード再発行などのリンクのURLの語尾に付いている↓これ
www.hoge.org/foo.aspx?key=ab1151de4133132b19720f793a23v368

この30文字ほどの文字列っていうのは、
どのようにして生成されているのでしょうか?

目的によって違うのでしょうが、そもそもどのように内部的に
利用されているのかが想像つきにくいです。

どなたか教えてください。
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2006-07-03 18:48
商品のIDじゃないですかね?

"foo.aspx"だけじゃ、どの商品の情報が見たいのか分からないでしょ?

参考:
http://www.studyinghttp.net/uri#HTTP_URI
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2006-07-03 18:58
ASP.NETだと、
Request.QueryString["key"];
という形でこのデータの部分を取り出せます。
商品のIDだったり、ユーザのIDだったりをここにいれておいて使ったりしますね。
IDの場合はなんらかの暗号化をしておくのが普通でしょうけど。
ぬるぴょん
ベテラン
会議室デビュー日: 2003/06/02
投稿数: 62
投稿日時: 2006-07-03 19:42
一郎さん、どっとねっとふぁんさん ありがとうございます。

説明不足で申し訳ありません。

URL末尾の文字列を取得する方法はわかるのですが
その暗号方法をみなさんどうやっているのかと思いまして・・・

例えば商品IDのリンクをメルマガに載せるとして
商品IDに加え、いつのメルマガか?だれがクリックしたか?等の情報を
サーバ側で知りたいのです。

もちろんそのためには文字列を暗号化しなければいけないと思うのですが
どのような方法があるのでしょうか?
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2006-07-03 20:55
引用:

もちろんそのためには文字列を暗号化しなければいけないと思うのですが
どのような方法があるのでしょうか?



暗号化「しなければならない」かどうかは、時と場合によります。
URL に含めてしまっている以上、暗号化したとしても秘匿性はたかがしれています。

引用:

商品IDに加え、いつのメルマガか?だれがクリックしたか?等の情報を
サーバ側で知りたいのです。



そういう付加情報は Session オブジェクトに収録するのがよくある実装です。
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2006-07-03 21:21
引用:

ぬるぴょんさんの書き込み (2006-07-03 18:44) より:
この30文字ほどの文字列っていうのは、
どのようにして生成されているのでしょうか?


システムによるんじゃないでしょうか。
私宛てに最近来るスパムは、逆にエンコードしてない連番丸見えみたいなのが多いです。
http://www.example.com/?ab12
みたいな感じで。
とりあえず、そういうのには、
http://www.example.com/?aa23
でアクセスしてやります。

引用:

ぬるぴょんさんの書き込み (2006-07-03 19:42) より:
URL末尾の文字列を取得する方法はわかるのですが
その暗号方法をみなさんどうやっているのかと思いまして・・・

例えば商品IDのリンクをメルマガに載せるとして
商品IDに加え、いつのメルマガか?だれがクリックしたか?等の情報を
サーバ側で知りたいのです。


凝ったのもたまにはあるのだと思いますが、大抵のエンコードは BASE64 に毛が5mmほど生えた程度のものではないでしょうか。
こういうものは情報量が限られますから、「商品ID」ではなく「セッションID」で持っているはずです。すなわち、セッションIDと、それに紐付く商品ID,顧客ID,メールアドレス,送信日時,etc. の対応表をサーバー側でずっと持っているのが普通でしょう。
そしてセッションIDを、裸で渡すか、単純なシーザー暗号程度にするか、デジタル署名まで付けるか、は開発者の腕の見せ所です。

#以下、あとで追加。
手抜きですが、
foo.aspx?key=ab1151de4133132b19720f793a23v368
の太字のところだけが可変の連番で他は固定、でもいいかも。

--
unibon {B73D0144-CD2A-11DA-8E06-0050DA15BC86}

[ メッセージ編集済み 編集者: unibon 編集日時 2006-07-03 21:24 ]

[ メッセージ編集済み 編集者: unibon 編集日時 2006-07-03 21:25 ]

[ メッセージ編集済み 編集者: unibon 編集日時 2006-07-03 21:26 ]

[ メッセージ編集済み 編集者: unibon 編集日時 2006-07-03 21:26 ]

[ メッセージ編集済み 編集者: unibon 編集日時 2006-07-03 21:27 ]
ぬるぴょん
ベテラン
会議室デビュー日: 2003/06/02
投稿数: 62
投稿日時: 2006-07-03 22:39
渋木宏明(ひどり)さん、unibonさん ありがとうございます。

なるほど、やはりセッションIDですね。

DBにセッションIDと商品IDや会員ID等を含んだテーブルを作って
メールを送信したらレコードを作り、一回でもそのセッションIDでアクセスされたら
そのレコードを消すといった方法にしてみます。

それとも生セッションIDだけでは危険なんでしょうか・・・
1

スキルアップ/キャリアアップ(JOB@IT)