Security Guide¶
This guide covers security features and best practices for FormVox administrators.
Access Control¶
Nextcloud Permissions¶
FormVox respects Nextcloud's permission system:
| Permission | Can View | Can Edit | Can Share | Can Delete |
|---|---|---|---|---|
| Read | Yes | No | No | No |
| Edit | Yes | Yes | No | No |
| Share | Yes | Yes | Yes | No |
| Delete | Yes | Yes | Yes | Yes |
File-Based Security¶
Since forms are files: - Standard Nextcloud file permissions apply - Encryption (including E2E) is supported - Sharing follows file sharing rules
Form-Level Permissions¶
Within FormVox: - View results - Who can see responses - Edit form - Who can modify questions - Manage sharing - Who can change access
Public Form Security¶
Password Protection¶
Add a password to public forms:
- Open form settings → Sharing
- Enable Password protection
- Set a strong password
- Share password separately from the link
Best practices: - Use unique passwords per form - Change passwords periodically - Don't include password in the same message as the link
Expiration Dates¶
Set automatic expiration:
- Open form settings → Sharing
- Enable Expiration date
- Choose date and time
After expiration: - Link returns an error - Existing responses are preserved - Reactivate by removing or extending the date
Access Restrictions¶
Limit who can access public forms:
- Enable Restrict access
- Select allowed users/groups
- Users must log in to submit
Use cases: - Internal surveys with public-style URL - Department-specific forms
Rate Limiting¶
Protect against spam and abuse.
Submission Rate Limits¶
For public forms: - Maximum submissions per minute - Per-IP tracking - Automatic blocking of rapid submissions
Configuration¶
Rate limits are configured per-form: 1. Open form settings → Security 2. Set Max submissions per minute 3. Default: 10 per minute
Blocked Requests¶
When rate limited: - User sees a friendly error message - Must wait before retrying - Legitimate users rarely affected
Duplicate Prevention¶
Methods¶
Prevent multiple submissions from the same person:
| Method | How It Works | Limitations |
|---|---|---|
| Browser fingerprint | Tracks browser/device | Can be bypassed |
| Nextcloud user | One per logged-in user | Requires login |
| Cookie-based | Stores submission cookie | Cleared by user |
Configuration¶
- Open form settings → Submission
- Enable Prevent duplicates
- Choose method
Data Protection¶
Response Data¶
Form responses contain potentially sensitive data:
Recommendations: - Collect only necessary information - Inform respondents about data usage - Set appropriate access permissions - Delete old responses regularly
GDPR Compliance¶
For EU compliance:
- Privacy notice - Add description explaining data usage
- Consent - Include a consent checkbox if required
- Data export - Users can request their data
- Deletion - Delete responses when no longer needed
Data Retention¶
Implement a retention policy: 1. Export and archive old responses 2. Delete responses from active forms 3. Document your retention period
Encryption¶
Server-Side Encryption¶
FormVox works with Nextcloud's server-side encryption: - Files encrypted at rest - Transparent to users - Standard file encryption settings apply
End-to-End Encryption¶
FormVox is compatible with E2E encryption: - Forms can be stored in E2E folders - Content encrypted on client - Server cannot read form data
Note: Public links don't work with E2E encrypted forms.
Audit Logging¶
What's Logged¶
FormVox logs security-relevant events: - Form creation/deletion - Permission changes - Public link creation - Failed authentication attempts
Viewing Logs¶
Check Nextcloud's log file:
Security Best Practices¶
For Administrators¶
- Keep updated - Install FormVox updates promptly
- Review permissions - Audit form access regularly
- Monitor usage - Check for unusual activity
- Enable HTTPS - Always use encrypted connections
- Strong passwords - Enforce password policies
For Form Creators¶
- Minimal data - Only collect what you need
- Appropriate sharing - Don't over-share forms
- Password protection - Use for sensitive forms
- Expiration dates - Set for temporary forms
- Review responses - Delete when no longer needed
For Public Forms¶
- Rate limiting - Always enable
- Expiration - Set reasonable timeframes
- Passwords - Use for sensitive content
- CAPTCHA - Consider for high-traffic forms (if available)
Incident Response¶
Suspected Data Breach¶
If you suspect unauthorized access:
- Disable sharing - Remove public links immediately
- Review logs - Check for suspicious activity
- Export data - Save a copy for investigation
- Notify - Inform affected users if required
- Reset - Change passwords, review permissions
Spam/Abuse¶
If a form is being abused:
- Enable rate limiting - Reduce submissions per minute
- Add password - Require authentication
- Restrict access - Limit to known users
- Delete spam - Remove unwanted responses
- Disable temporarily - If needed
Next Steps¶
- Review Configuration options
- Check API security
- Read Architecture overview