Skip to content

Security and limits

Every REST request checks the member’s permission and the WordPress nonce. Posts, comments and profile text are cleaned before they are saved and shown. Link previews only fetch public web addresses on ports 80 and 443. The request goes to the public address the link resolved to, and every redirect is checked again.

ActionLimit per member
New posts5 a minute
Comments20 a minute
Edits of posts and comments20 a minute
Image uploads20 a minute, up to 30 images not yet posted
Likes and saves60 a minute
Joining or leaving spaces20 a minute
Invitations30 a minute
Profile saves20 a minute
Reports10 a minute
Messages30 a minute
New events10 an hour. Counted only after the form is valid.
Starting a call Pro10 a minute. Joining a call that is already running does not count.
Shop requests Pro3 an hour
New shop products Pro10 a minute
Edits of shop products Pro30 a minute
Members mentioned in one post or comment20

Logging in and signing up have their own limits, which apply to everyone:

ActionLimit
Wrong passwords for one account5 in 15 minutes from one network address, 20 in 15 minutes in total. The limit for one network address applies only after failed attempts; a correct password is never refused.
Wrong login codes for one login Pro5, then the member logs in again
Wrong login codes for one account Pro10 in 15 minutes and 30 a day. The member gets an email when the daily limit is reached.
Login codes by email for one account Pro10 an hour
New accounts from one network address5 an hour
Password reset emails3 an hour for one account, 5 requests in 15 minutes from one network address

Change these with the spacebay_auth_attempts filter. They cover the community login page; to also limit attempts on wp-login.php, use a login protection plugin or your host’s firewall. If your site is behind a proxy or CDN that hides visitor addresses, return the real address with the spacebay_client_ip filter, otherwise all visitors share one limit. With Pro, authenticator keys are stored encrypted, and backup codes and emailed codes are stored as hashes.

For the other actions, administrators are not limited. Change limits with the spacebay_rate_limit filter. Images can be up to 8000 pixels on the longest side; the server’s memory limit can lower this.

Uploads are stored in a private folder, wp-content/uploads/spacebay-private/<random folder>/. Files get random names. The original file name is never kept. Your web server does not send files from this folder directly.

A private image is shown through a checked address, your-site-url/?spacebay_media=ID. SpaceBay sends it only to people who may see it:

  • Images in chats: only the members of that conversation. Group members see only images in messages sent since they joined.
  • Images in private spaces: only people who can read the post.
  • An upload not yet posted: only the member who uploaded it.
  • A reported message: staff can see its images.

Logged-out visitors and other members get “Image not found”.

Only avatars, cover images and images in posts of public, published spaces are normal public files. If a space turns private or is archived, its images move to private storage. They move back if the space opens again.

nginx sites need one rule. Apache and IIS are handled by files the plugin writes in the folder. nginx ignores those files, so add this to your server config:

location ^~ /wp-content/uploads/spacebay-private/ { internal; }

What SpaceBay does to protect members:

  • Photo details such as GPS location and camera are removed from every uploaded image.
  • GIF images keep their animation, so they are checked for hidden code instead, and refused if any is found.
  • Images that are uploaded but never posted are removed after a day. Images are deleted with their post, and with their member.