Aether takes security seriously and provides built-in mechanisms to protect your application.
Use the passkey-first identity platform for people, organizations, CLI device authorization, service identities and federation. It uses organization-scoped roles and capabilities; password authentication, identity JWT fallback and global groups/permissions are not supported. Generic aether-core authentication remains separate for unrelated application protocols.
Generic aether-core applications can install CsrfMiddleware:
pipeline.installCsrfProtection()
Aether Identity instead validates an exact allowed Origin and a session-bound CSRF header token on state-changing browser requests. Query-string and form-body CSRF tokens are rejected. Follow the Identity CSRF policy when mounting /identity/v1.
For enhanced security, use the SecurityHeaders middleware. It sets:
Content-Security-PolicyX-Content-Type-Options: nosniffX-Frame-Options: DENYStrict-Transport-Security (HSTS)pipeline.installSecurityHeaders()
Aether supports HTTPS out of the box on the JVM.
You can configure SSL keys in your VertxServerConfig.
val config = VertxServerConfig(
ssl = SslConfig(
enabled = true,
keyPath = "path/to/key.pem",
certPath = "path/to/cert.pem"
)
)
For development, you can enable self-signed certificates:
val config = VertxServerConfig(
ssl = SslConfig(
enabled = true,
selfSigned = true
)
)
The aether-db ORM uses parameterized queries internally, which protects against SQL injection attacks by default. Always use the ORM methods rather than raw SQL strings when handling user input.
When using aether-ui (Composable DOM), output is escaped by default, mitigating Cross-Site Scripting (XSS) risks. If you are rendering raw HTML strings, ensure you sanitize user input manually.