| icon | lock-keyhole | |||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| layout |
|
Walver.io is designed with security as a top priority. This document outlines the security features and best practices implemented in the service.
At the core of Walver.io's security model is cryptographic message signing, which ensures that only the true owner of a wallet can complete the verification process.
- When a user connects their wallet to a verification page, Walver.io generates a unique message containing:
- A verification identifier
- A timestamp
- The wallet address being verified
- A unique session identifier
- The user signs this message using their wallet's private key, which never leaves their device.
- The signature and message are sent to Walver.io's servers, where:
- The signature is verified against the user's public key
- The message contents are validated to ensure they haven't been tampered with
- The timestamp is checked to prevent replay attacks
This process guarantees that the person completing the verification actually controls the wallet's private key, without ever exposing that key.
All cryptographic verification happens on the backend, which provides several security advantages:
- Tamper Resistance: Client-side verification can be bypassed by modifying browser code or using developer tools. Backend verification prevents this.
- Consistent Validation: The same validation logic is applied to all verifications, regardless of the client used.
- Protection Against MITM Attacks: Malicious actors cannot intercept and modify the verification process.
Webhooks are secured using a user-defined secret key
- When creating a verification, you can specify a secret key.
- When Walver.io sends a webhook notification, it includes the secret key in the request body.
- Your application can verify this secret key to ensure the webhook comes from Walver.io and hasn't been tampered with.
Walver.io implements secure API key management:
- Fine-grained Permissions: API keys can be created with specific permissions (coming soon).
- Usage Tracking: All API key usage is logged for security auditing.
- Key Rotation: API keys can be easily created and deleted, facilitating regular key rotation.
- Single-View: Full API keys are only shown once upon creation, requiring users to save them securely.
To prevent abuse and brute force attacks, Walver.io implements rate limiting:
- Most API endpoints are limited to 10 requests per minute per IP address.
- Sensitive endpoints, like those for signature verification, have more strict limits.
- Rate limit information is included in response headers:
X-RateLimit-Limit: The maximum number of requests allowed per time periodX-RateLimit-Remaining: The number of requests remaining in the current time periodX-RateLimit-Reset: The time when the rate limit will reset
When rate limits are exceeded, the API returns a 429 Too Many Requests response.
Walver.io implements multiple layers of data protection:
- HTTPS Everywhere: All API endpoints and the web interface use HTTPS to encrypt data in transit.
- Data Minimization: Only required data is collected and stored.
- Database Security: Production data is stored in a secure database with access controls and encryption.
- Regular Backups: Data is backed up regularly with a 7-day rotation to prevent data loss.
Each verification generates a unique message for signing, which includes:
- A verification identifier
- The service name requiring the verification
- A timestamp
- The wallet address
- A session identifier
This prevents replay attacks where a signature from one verification could be reused for another.
For sensitive verifications, Walver.io supports one-time use links:
- Once a verification is successfully completed, the link becomes invalid.
- This prevents the same link from being shared or reused by multiple people.
- Ideal for sensitive verifications like token airdrops or exclusive access grants.
For enhanced identity verification, Walver.io offers additional verification methods:
- Users provide their email address
- Walver.io sends a one-time verification code to the email
- Users must enter this code to complete verification
- This adds an additional layer of identity verification beyond wallet ownership
- Users provide their Telegram username
- They are directed to start a conversation with the Walver bot with a specific payload
- The bot verifies the payload and confirms the user owns the specified Telegram account
- This confirms the user owns the specified Telegram account
- Users provide their Twitter/X username
- They are instructed to follow a link to a verification page
- They are instructed to click a button to verify their account
- This confirms the user controls the Twitter account
- Users provide their Discord username
- They are instructed to follow a link to a verification page
- They are instructed to click a button to verify their account
- This confirms the user controls the Discord account
The production environment uses Docker containers with:
- Minimal Base Images: Reduces attack surface
- Non-Root Users: Containers run as non-root users
- Read-Only Filesystems: Where possible
- Resource Limitations: Prevents DoS attacks
- Automatic Updates: Security patches are applied regularly
Walver.io implements continuous security monitoring:
- Application Logging: All significant actions are logged
- Error Tracking: Errors are tracked and analyzed for security implications
- Usage Patterns: Unusual usage patterns trigger alerts
When using Walver.io, we recommend these security best practices:
- Use Strong Secrets: Use long, random webhook secrets and API keys
- Verify Signatures: Always verify webhook signatures
- Use HTTPS: Only use HTTPS for webhooks and redirect URLs
- Rotate Keys: Regularly rotate API keys
- One-Time Links: Use one-time links for sensitive verifications
- Set Expirations: Use expiration dates for verification links
- Check Domains: Ensure users are on the genuine walver.io domain
If you discover a security vulnerability in Walver.io, please report it immediately:
- Do not disclose the issue publicly
- Email the security details to security@walver.io
- Include steps to reproduce the vulnerability
- Allow time for the issue to be addressed before disclosure
Walver.io is continuously improving its security features. Upcoming security enhancements include:
- Fine-grained API Key Permissions: Limit what each API key can do
- Enhanced MFA: Additional multi-factor authentication options for creator accounts
- Audit Logs: Detailed logs of all actions for security compliance
- IP Restrictions: Restrict API access by IP address
- Enhanced Fraud Detection: Machine learning-based detection of suspicious activity