hokahokanikumanさん、こんにちは。
あくまでも一般的な回答になりますが、nonce は攻撃を防ぐための手法のひとつですから、ある方がよいとは考えられます。
nonceの必要性を知り
とおっしゃっているので、ご自身の作られているアプリケーションがそう言った攻撃に対応する必要があるのかどうかではないでしょうか。
具体的には、例えば非ログインユーザーの投稿データを攻撃者が入手できた場合、同じ内容の投稿を繰り返し投稿し続けるなどの攻撃が可能になるのではないでしょうか。
ただし、そもそも連続投稿などが不可能なシステムとして構築されていなければ通常の攻撃でも同じことができてしまいますが…
参考になれば。
こんにちは
nonce を使うことが望ましいと思います。
・nonce が含まれているか
・nonce の値は正しいか
・nonce の期限が切れていないか
をチェックできますので、bot による投稿やサイト外からの攻撃を防ぐ助けになると思います。
ただ、非ログインでもログインでも投稿できるという特性から、nonce が上手く動作しないかもしれません。
その期間では、同じユーザーの同じコンテキストに対して、同じ nonce が生成されます。
という特性から、非ログイン状態でアクセスした際に生成された nonce が、ログイン後も使われます。
ログイン状態で投稿すると、サーバー側ではログイン状態の nonce としてチェックされ、正しくない nonce と判断されます。
参考)https://wpdocs.osdn.jp/WordPress_Nonce
その解決策もあるようですが、私は試したことがありません。
また、これが正しい方法なのかも確認していません。
https://wordpress.stackexchange.com/questions/333367/handling-nonces-for-actions-from-guests-to-logged-in-users
今思いつきましたが、ログイン状態と非ログイン状態で生成・verify する nonce の名前を変えたらいいかもしれませんね。
これの正しい対処方法をご存知の方、教えて下さい・・・
@shokun0803 様
具体例のおかげで非ログインユーザーについても必要性が理解できました
たしかにnonceさえあれば本人だけになりますね
ご回答どうもありがとうございます!
@munyagu 様
そういえばbotを失念していました!非ログインユーザーについても絶対に必要ですね。
具体的にnonceで何をチェックすべきかもよくわかっていませんでしたので、その辺りもありがとうございます
さらに想定される問題と、なんと解決案まで至れり尽くせりで…
どうもありがとうございます!
ログイン状態によって発行nonceを分ける解決案につきましては、実装できましたらこちらのフォームにてまたご報告させて頂きます。