Security & Data Handling

We understand that proposals contain highly sensitive business information—pricing strategies, technical approaches, and competitive differentiators. Security is built into RFPWise from the ground up.

Encrypted at rest Auto-purged in 24h No AI training on your data

🔐 Security at a Glance

  • AES encryption at rest for all uploaded documents and generated content
  • Automatic data purging within 24 hours of session completion (configurable)
  • Session isolation via cryptographically random UUIDs preventing cross-session access
  • No model training on customer data—your proposals remain yours
  • Enterprise-grade infrastructure hosted on AWS with server-side encryption
  • CSRF, rate limiting, and secure cookies protect against common web vulnerabilities

Data Encryption

Encryption at Rest

All user data stored by RFPWise is encrypted using industry-standard Fernet symmetric encryption (AES-128-CBC with HMAC-SHA256 for authentication). This includes:

  • 📄Uploaded RFP documents (PDF, DOCX)
  • 📋Extracted metadata and parsed content
  • ✍️Generated proposal sections and drafts
  • 👥Team member profiles and project histories
  • 🔒Session metadata and billing information
  • ⚙️Administrative data (licenses, orders)

Technical Implementation

  • Key Management: Encryption keys are stored as environment variables, never in source code or version control.
  • File Storage: All sensitive files use the .enc extension. File permissions are set to 0600 (owner read/write only).
  • Directory Security: Administrative and session directories are created with 0700 permissions.
  • S3 Integration: When using AWS S3, server-side encryption (SSE-AES256) is enabled in addition to application-level encryption—defense in depth.
  • Processing Isolation: Files are decrypted only into short-lived, per-session temp directories during active processing, then deleted upon completion. A background process sweeps for any stragglers.

Encryption in Transit

All communications between users and RFPWise servers occur over HTTPS with TLS encryption. This includes web interface interactions, API calls, and file uploads/downloads.

Access Control & Session Security

Session Isolation

Each proposal session is assigned a cryptographically random UUID (version 4), for:

  • Unpredictability: UUIDs are generated using secure random number generators, making it computationally infeasible to guess another user's session.
  • Path Traversal Prevention: Session IDs are validated against a strict regex pattern before any storage operations. Invalid IDs are rejected.
  • Data Isolation: Each session's data lives in its own namespace, preventing cross-session data leakage.

Authentication Security

Administrative access is protected by multiple security layers:

  • Password Hashing: All passwords are stored using PBKDF2-SHA256 with configurable iterations and salt—never plaintext.
  • Brute Force Protection: Login endpoints are rate-limited to 10 attempts per hour per user and 30 per hour per IP.
  • Session Management: Server-side sessions with configurable timeouts (default: 8 hours).

Cookie Security

Setting Protection
HttpOnly = True Prevents JavaScript access, mitigating XSS attacks
SameSite = Lax Protects against CSRF attacks from third-party sites
Secure = True Cookies are only transmitted over HTTPS (production)

Web Application Security

CSRF Protection

Cross-Site Request Forgery protection is implemented globally. Every state-changing request requires a valid CSRF token, which is:

  • Generated uniquely for each session
  • Embedded in HTML forms automatically
  • Included in API requests via X-CSRFToken header
  • Validated server-side before processing any mutation

Rate Limiting

Flask-Limiter prevents abuse and denial-of-service attacks:

  • Login Endpoints: 10 requests/hour per user, 30 requests/hour per IP
  • Public Forms: 10 requests/minute, 200 requests/day
  • API Endpoints: Configurable per-endpoint limits based on resource intensity

File Upload Security

All file uploads are processed with multiple security measures:

  • Filename Sanitization: Path traversal characters are removed and filenames normalized
  • Size Limits: Maximum upload sizes enforced at the web server level
  • Type Validation: File types validated before processing
  • Immediate Encryption: Files are encrypted before being persisted to storage

Data Retention & Deletion

Automatic Data Purging

RFPWise implements automatic data purging to minimize the exposure window for sensitive proposal data:

  • Session Data: Automatically deleted 24 hours after last modification
  • Upload Cache: Temporary upload files purged within 24 hours
  • Processing Artifacts: Intermediate files (extracted images, temporary PDFs) deleted within 12 hours

Retention periods can be configured to meet specific organizational requirements.

Data Portability

Users can export generated proposals in standard formats (DOCX) at any time before automatic purging. The portable .wise session file allows work to resume on different devices or after a session expires.

Infrastructure Security

Cloud Architecture

  • AWS S3: Object storage with server-side encryption (SSE-AES256)
  • Redis: In-memory caching for session management (encrypted connections)
  • Render: Managed platform with automatic SSL certificates and DDoS protection
  • Stripe: PCI-DSS compliant payment processing—RFPWise never handles raw card data

AI Provider Security

RFPWise uses OpenAI's API for content generation:

  • No Training on Customer Data: OpenAI's API does not use submitted data for model training
  • Data Retention: OpenAI retains API inputs for up to 30 days for abuse monitoring, then deletes
  • Encrypted Transmission: All API calls made over HTTPS
  • Enterprise Options: Zero-retention agreements available for enterprise deployments

Security Controls Summary

Category Control Implementation
Encryption Data at Rest Fernet (AES-128-CBC)
Data in Transit TLS encryption
S3 Storage SSE-AES256
Access Control Session Isolation UUID4 with regex validation
Password Storage PBKDF2-SHA256
Brute Force Protection Rate limiting (10/hr)
Web Security CSRF Protection Flask-WTF tokens
Cookie Security HttpOnly, SameSite, Secure
File Uploads Sanitization + encryption
Data Lifecycle Auto Purge 24 hours (configurable)
File Permissions 0600 files, 0700 directories

Enterprise Options

For organizations with additional security requirements, we offer:

  • Custom data retention policies
  • Single-tenant deployment options
  • Zero-retention AI provider agreements
  • Custom security assessments and audits

Questions about security?

We're happy to discuss your organization's specific requirements.

Contact Us ← Back to Home