4

私はノンスについて漠然と理解していますが、少し混乱しています。

ノンス検証が失敗した場合の正しい応答は何ですか?

どのような状況でナンス検証が失敗する可能性がありますか?本物のユーザーへのリスクは何ですか?

4

1 に答える 1

4

フォームを使用したナンスの目標は、一般に2つあります。データが1回だけ送信されるようにすることと、ユーザーが実際に送信することを確認することです。クロスサイトリクエストフォージェリに対する防御を支援する2番目のポイント:http://en.wikipedia.org/wiki/Cross-site_request_forgery

それらに対処することは文脈に依存します。ユーザーがフォームに入力しているときにナンスが失敗した場合は、ページを更新して(データを事前に入力して)、「問題が発生しました。入力を確認して、もう一度送信してください」などの問題がないことを伝えてください。有効なユーザーは送信を押すか、攻撃を阻止するか、少なくとも何が起こっているかをユーザーに知らせます。

検証はいくつかの理由で失敗する可能性があります。ある形式のブラウザキャッシュを有効にしている場合、ユーザーは1つの形式(特定のナンスを使用)にアクセスしてから、別の形式(独自のナンスを使用)に移動し、戻るボタンを使用して最初の形式に戻ります。ナンスは失敗する可能性があります。 。ブラウザのキャッシュの発生を許可することにより、ページは更新されません。サーバーは、セッションに有効なナンスを1つだけ保存する可能性が高いため、一致しません。有効なユースケースと失敗したナンス(私が眠りにつくことはありません。フォームが再入力されていることを確認してください)。

概して、私の推奨事項は次のとおりです。ユーザーに再送信するように指示し、入力を確認する必要があることを微妙に暗示し、再送信を容易にします。

于 2011-04-05T22:29:19.243 に答える