1

Python と Django を使用して、ユーザーが友人に PDF ベースのギフトを贈れるようにします。その友人は、電子メールで送信されたリンクから私のサイトにアクセスすることで、PDF を受け取ることができます。

プランはこちら

  1. ユーザーが友人に贈り、友人の電子メールを入力します

  2. バックグラウンドで、保存時に一意に生成されたハッシュ コードを含むギフト モデルが保存されます。

  3. www.mydomain.com/gift/<hash code here>友人は、( )のような PDF をダウンロードするためのリンクを提供する電子メールを受け取ります。

  4. 郵送されたリンクをクリックすると、システムは指定されたハッシュ コードを持つそのようなギフト モデルが存在するかどうかを確認します。

  5. その場合はダウンロードが開始され、それ以外の場合は 404.

これはこれを解決する賢い方法ですか?もしそうなら、どのハッシュ関数をお勧めしますか? /gift/ は一般に公開されているので興味深いです。幸運にもリンクを見つけることができれば、誰でもそれを受け取ることができます。受信者の姓名とギフトモデルの pk でハッシュ関数をフィードする予定です

4

3 に答える 3

6

ハッシュを使用する必要はありません。必要なのはランダム トークンだけです。

  1. ランダムな文字列を作成する
  2. すでに使用されている場合 (可能性は低い)、手順 1 を繰り返します。

文字列を十分に長くして、推測が困難になるようにします

ランダムな文字列を生成する簡単な方法は

>>> import os
>>> os.urandom(10).encode('hex')
'3fa0c2f72ff275f48d66'
>>> os.urandom(20).encode('hex')
'ecc1143b3fc90bd99bcd609b326694f13291e3d1'
>>> os.urandom(30).encode('hex')
'd4a9a2cd7b48eca831e9805e68dd6f7db7275b654e55cdec603631a5a355'
>>> 
于 2010-02-25T21:46:57.440 に答える
1

UUIDはかなりランダムです

In [13]: import uuid

In [14]: uuid.uuid4().hex
Out[14]: 'f7a7667e94574e32b3589f84ca35a98d'
于 2010-02-25T23:35:10.220 に答える
0

希望どおりに動作しない場合がありますが、このプロジェクトは出発点として適しています。

http://github.com/mogga/django-token-auth/

于 2010-02-25T21:40:30.613 に答える