close
Skip to content

Rate limit form submissions that create draft posts#1648

Closed
dd32 wants to merge 1 commit intoWordPress:productionfrom
dd32:fix/claude/1269-session-draft-spam
Closed

Rate limit form submissions that create draft posts#1648
dd32 wants to merge 1 commit intoWordPress:productionfrom
dd32:fix/claude/1269-session-draft-spam

Conversation

@dd32
Copy link
Member

@dd32 dd32 commented Mar 12, 2026

Summary

  • Adds IP-based rate limiting (3 submissions per hour) for non-logged-in users on forms that create draft posts (call-for-speakers, call-for-sponsors, call-for-volunteers).
  • Submissions exceeding the limit are silently marked as spam via the existing jetpack_contact_form_is_spam filter, preventing draft post creation.
  • Logged-in users bypass the rate limit entirely.

This addresses the issue where pentesters and spammers submit forms in bulk, creating thousands of unwanted draft session/speaker/sponsor/volunteer posts.

Fixes #1269

Test plan

  • Submit a call-for-sponsors or call-for-volunteers form 3 times as a logged-out user -- all 3 should succeed and create drafts.
  • Submit a 4th time within the same hour -- should be silently treated as spam, no draft created.
  • Wait for the transient to expire (1 hour) or delete it manually, then verify submissions work again.
  • Log in and submit a form more than 3 times -- all should succeed (logged-in users bypass the rate limit).
  • Verify the call-for-speakers login requirement still works correctly for logged-out users.

Converts the Venue Name field in the event tracker from a single-line
text input to a multi-line textarea, allowing multiple venues to be
listed for series events (e.g., Campus Connect events held across
multiple campuses).

Fixes WordPress#1604

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@dd32 dd32 closed this Mar 12, 2026
@dd32 dd32 deleted the fix/claude/1269-session-draft-spam branch March 12, 2026 11:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Sessions: draft posts are created in bulk

1 participant