Security
How we protect your data and EDI transmissions
Data in Transit
- HTTPS/TLS — All connections to the RetailReady platform use TLS encryption. API calls, web access, and webhook notifications are encrypted end-to-end.
- SFTP — EDI document transfers to retailers use SSH File Transfer Protocol with key-based authentication.
- AS2 — Applicability Statement 2 (AS2) transmissions use signed and encrypted messages with digital certificates for retailer connections that require it.
Data at Rest
- Credential encryption — Sensitive credentials (SFTP passwords, AS2 private certificates, API keys) are encrypted at rest using ASP.NET Data Protection.
- Password hashing — User passwords are hashed using industry-standard algorithms via ASP.NET Identity. We never store plaintext passwords.
- Database — Production databases are hosted on encrypted storage volumes.
Authentication & Access Control
- JWT tokens — Session authentication uses short-lived JSON Web Tokens with refresh token rotation.
- Email verification — All accounts must verify their email address before gaining full platform access.
- Password policy — Minimum 8 characters, requiring uppercase, lowercase, and a digit.
- Account lockout — Accounts are temporarily locked after 5 failed login attempts.
- Google OAuth — Optional single sign-on via Google, using standard OAuth 2.0 authorization code flow.
- Role-based access — Customer and admin roles with separate permission boundaries. Customers can only access their own data.
Infrastructure
- Dedicated servers for the API, background engine, and EDI transmission services
- Separate EDI server for SFTP and AS2 communication, isolated from the application layer
- Firewall rules restricting access to necessary ports only
- Regular security updates applied to all servers and dependencies
Application Security
- Input validation — All user inputs are validated on both client and server sides. Server-side validation uses data annotations and Zod schemas.
- SQL injection prevention — All database access uses Entity Framework Core parameterized queries. No raw SQL interpolation.
- XSS protection — User-generated content is sanitized. The frontend uses Svelte's built-in HTML escaping and DOMPurify where raw HTML is rendered.
- CSRF protection — SvelteKit's form actions include CSRF protection by default.
- Rate limiting — Authentication endpoints are rate-limited to prevent brute-force attacks.
Third-Party Services
We integrate with a limited set of trusted third-party services:
- Stripe — PCI DSS Level 1 certified payment processor. Payment data goes directly to Stripe and is never stored on our servers.
- Google — OAuth authentication only. We request minimal scopes (email and profile).
- Anthropic (Claude) — AI assistant queries. No personally identifiable information is sent in AI requests.
- Resend — Transactional email delivery with TLS encryption.
EDI-Specific Security
- Sandbox isolation — Practice mode documents are never transmitted to real trading partners. Sandbox data is clearly separated from live operations.
- Per-customer isolation — Each customer's EDI documents, trading partners, and configurations are fully isolated. No cross-customer data access is possible.
- AS2 certificate management — Trading partner certificates are stored encrypted and used only for their designated connections.
- Audit trail — All document transmissions, status changes, and administrative actions are logged with timestamps and user attribution.
Incident Response
In the event of a security incident affecting customer data, we will notify affected customers within 72 hours with details about the incident, its impact, and remediation steps taken.
Reporting Vulnerabilities
If you discover a security vulnerability, please report it responsibly to security@retailreadyedi.com. We take all reports seriously and will respond within 48 hours.