セキュリティ トークンを使用して、このような推測できない URL を作成しています (16 バイト、16 進数)
http://example.com/something/private/b5f8c21a628e12b39786fb8ef9561d31
トークンは、共有パスワードのようなものです。URL がリソースへのアクセスを許可されているかどうかは誰にもわかりません。
安全な URL に適切な安全なランダム値は何バイト必要ですか?
セキュリティ トークンを使用して、このような推測できない URL を作成しています (16 バイト、16 進数)
http://example.com/something/private/b5f8c21a628e12b39786fb8ef9561d31
トークンは、共有パスワードのようなものです。URL がリソースへのアクセスを許可されているかどうかは誰にもわかりません。
安全な URL に適切な安全なランダム値は何バイト必要ですか?
最終的に、URLセーフなBase64としてエンコードされた64ビットのランダムな値になりました。正しいトークンを推測する可能性は、1 / 2^64
に等しいものです1 / 18446744073709551616
。これはかなり印象的な数であり、攻撃者がhttpリクエストで正しいトークンを見つけることはほぼ不可能です。
URLは次のようになります。http://example.com/private/1oWYPiqO81k/
すべてのアプリケーションは、ある時点で暗号ナンスに依存しています。結局のところ、これはセッション ID または csrf トークン値です。ここで重要なのは、攻撃者がそれを破るのに 100 年ある場合、値がどれだけ長くても問題にならないということです。100年は長い年月ですが、これだけのデザインを維持できるように努力する必要があります。
Cookie と値のセキュリティの主な違いは、Cookie には有効期限があり、使用するたびに変更されることです。しかし、実際には、この値は何としても避けるべきです。これが認証に使用される場合は、セッション ID に依存します。そのためです。独自のセッションを展開しないでください。
たとえば、10 個の Unicode 文字の URL を推測することは事実上不可能です。これは、トークンが 160 ビット長であり、2 ^ 160 の異なる URL が考えられるためです。ただし、セキュリティのためにそのようなものに依存するべきではありませんが、従来のログインと認証に依存する必要があります