
session.cookie_httponly = True 3. ハッシュベースの防御 CSRF 検証トークンは WordPress には実装されていません。なぜなら、実装すると WordPress のトラックバックおよびピンバック機能を妨げることになるからです。サーバーは不正な CSRF リクエストと正当な PINGBACK/TRACEBACK リクエストを区別できないため、WordPress は正しい CSRF トークンを持たないコメントを自動的に PINFBACK および TRACEBACK リクエストとして受け入れ、そのコメントをホワイトリストフィルタでフィルタリングします。
この CSRF 脆弱性を防御するために、フォームに hashnonce という新しいフィールドを追加し、コメントが管理者によって送信されたことを検証します。管理者はコメントフィールドの値に自身の Cookie を使って署名します。
コメントフィールドの値の署名は、md5 を使用してハッシュ値を生成します(図参照)。
管理者が PINFBACK および TRACEBACK を受け入れようとし、_wp_unfiltered_html を提供できない場合、wp_verify_hashNonce を使用します。検証に失敗するとエラーが報告されます。検証が成功した場合でも、ロジックエラーは修正されており、"wp_filter_kses" を使用してコメントがフィルタリングされます。
修正したコード:
3番目の方法は https://github.com/sijiahi/Wordpress_cve-2019-9787_defense から変更したものです。