Skip to Content
Security

Security

The darto_security package provides a set of plug-and-play middlewares inspired by Helmet.js to improve the security of your Darto application. These middlewares help protect your API against common threats like XSS, CSRF, request spamming, and more.


Installing

dart pub add darto_security

Usage

To use all security features with default settings:

import 'package:darto/darto.dart'; import 'package:darto_security/darto_security.dart'; void main() { final app = Darto(); app.use(dartoSecurity()); app.get('/', (req, res) { res.send('🔐 Secured by darto_security!'); }); app.listen(3000, () { print('🔹 Server is running at http://localhost:3000'); }); }

Available Middleware Flags

You can selectively enable or disable each middleware by passing its respective flag:

MiddlewareFlag nameDefaultDescription
Block User AgentsblockUserAgentstrueBlocks user agents provided in blockedAgents.
Block IPsipBlocktrueBlocks IPs provided in blockedIps.
CORScorsEnabledtrueEnables CORS.
Content-Security-PolicycontentSecurityPolicytrueAdds Content-Security-Policy header.
Nonce CSPnonceCspfalseAdds nonce-based CSP header.
FrameguardframeGuardtrueProtects against clickjacking via X-Frame-Options.
Hide Powered ByhidePoweredBytrueRemoves X-Powered-By header.
HSTShstsEnabledtrueAdds Strict-Transport-Security header.
IE No OpenieNoOpenEnabledtrueAdds X-Download-Options for IE.
No CachenoCacheEnabledtruePrevents caching of sensitive data.
No SniffnoSnifftrueAdds X-Content-Type-Options: nosniff.
Rate LimitingrateLimittruePrevents abuse via excessive requests.
Referrer PolicyreferrerPolicytrueAdds Referrer-Policy header.
Generic Sec HeaderssecurityHeaderstrueAdds common security headers.
XSS ProtectionxssProtectiontrueEnables XSS filter in browsers.

Custom Parameters

Some middlewares accept custom parameters:

dartoSecurity( blockedAgents: ['BadBot', 'Scanner'], blockedIps: ['192.168.0.10'], allowedOrigins: ['https://myapp.com'], allowedMethods: ['GET', 'POST'], rateLimitMaxRequests: 50, rateLimitDuration: Duration(seconds: 30), );

Parameters Description

ParameterTypeDescription
blockedAgentsList<String>User agents to block.
blockedIpsList<String>IP addresses to block.
allowedOriginsList<String>Origins allowed in CORS.
allowedMethodsList<String>Methods allowed in CORS.
rateLimitMaxRequestsintMax requests before blocking.
rateLimitDurationDurationTime window for rate limiting.

⚠️ Middlewares like blockUserAgents and ipBlock require their respective lists to be non-empty to take effect.


Disable Middleware

To disable a specific middleware, set its flag to false:

dartoSecurity( xssProtection: false, rateLimit: false, corsEnabled: false, );

Full Example

import 'package:darto/darto.dart'; import 'package:darto_security/darto_security.dart'; void main() { final app = Darto(); app.use(dartoSecurity( blockedAgents: ['BadBot'], blockedIps: ['123.123.123.123'], allowedOrigins: ['https://secure-app.com'], allowedMethods: ['GET', 'POST'], rateLimitMaxRequests: 60, rateLimitDuration: Duration(minutes: 1), )); app.get('/', (req, res) { res.send('🔐 Secured and customized!'); }); app.listen(3000, () { print('🔹 Server is running at http://localhost:3000'); }); }
Last updated on