GoでWebサービスを書いています。
ログインすると、トークンがユーザーに返されます。これは、ユーザーが認識されるために後続の各リクエストでトークンを渡す必要があるという意味で、Cookie のように動作します。
私のトークンジェネレーターは「暗号的に安全」でなければなりませんか?高エントロピーで生成?
Go でこれを達成するにはどうすればよいでしょうか。できれば、標準ライブラリまたは私とは異なる暗号化能力のある人々によって作成されたライブラリを使用してください。
GoでWebサービスを書いています。
ログインすると、トークンがユーザーに返されます。これは、ユーザーが認識されるために後続の各リクエストでトークンを渡す必要があるという意味で、Cookie のように動作します。
私のトークンジェネレーターは「暗号的に安全」でなければなりませんか?高エントロピーで生成?
Go でこれを達成するにはどうすればよいでしょうか。できれば、標準ライブラリまたは私とは異なる暗号化能力のある人々によって作成されたライブラリを使用してください。
攻撃者が新しいセッション トークンを推測し、それらと一緒に特権を取得する能力を減らすために、トークン ジェネレーターが暗号的に安全であることは有益です。crypto/randは、ランダムな整数、素数、およびこれに適したバイトを生成できる関数を含む、そのような乱数ジェネレーターを実装します。
はい、暗号化ハッシュを使用します。gorilla/securecookie などを使用してキーを生成し、Cookie ストレージを提供できます: http://www.gorillatoolkit.org/pkg/securecookie
検証のために Cookie のみに依存している場合は、攻撃をリプレイする可能性があることに注意してください。Cookie を使用してサーバー側のチェック (ユーザー ID == アクティブ/有効) をトリガーするか、ID が存在しない場合はバウンスします。