web-dev-qa-db-ja.com

ナンスは複数回再利用できますか?バグ/セキュリティの問題?

私はnonceは一度だけの使用を意図していると読んだことがあります、そしてajaxリクエストの後、あなたは新しいnonceを発行すべきで、次のajaxリクエストで、新しいnonceがサーバーに送られるでしょう。

ただし、同じnonceトークンを使用して繰り返しのAjaxリクエストをテストしたところ、同じトークンに対してwp_verify_nonceがtrueを返すたびに何十回も再利用できることがわかりました。

これは意図的なのか、それともバグですか?

それでも、それぞれのajaxリクエストで新しいnonceを発行する必要がありますか。それとも、今後もすべてのリクエストに対して同じnonceを機能させることができますか?

7
Click Upvote

WordPressでは、ナンスはユーザー、実行されているアクション、そして時間に固有です。時間に関しては、ノンスは24時間有効で、12時間ごとに変わります。これは、1回使用される実数を使用することは追跡システムを追加することと使用されるナンスを記憶することとを含むので、許容できるトレードオフと考えられる。

ナンスもハッシュされるので、NONCE_SALT定数も結果のナンスの一部になります。 NONCE_SALTを変更すると、すぐにすべてのナンスが無効になります。

毎回新しいナンスを発行する必要があります。これは、タイミングや方法論を将来調整する必要がある場合に、コードがそれを適切に処理し続けるようにするためです。

11
Otto