Security Decorators¶
The decorators module provides route-level security controls for individual Django views.
Main Decorator Class¶
. SecurityDecorator¶
guard_core.decorators.SecurityDecorator(config)
¶
Bases: BaseSecurityDecorator, AccessControlMixin, RateLimitingMixin, BehavioralMixin, AuthenticationMixin, ContentFilteringMixin, AdvancedMixin
Source code in guard_core/decorators/base.py
from djangoapi_guard import SecurityConfig
from djangoapi_guard import SecurityDecorator
config = SecurityConfig()
guard_deco = SecurityDecorator(config)
@guard_deco.rate_limit(requests=5, window=300)
@guard_deco.require_ip(whitelist=["10.0.0.0/8"])
def sensitive_endpoint(request):
return JsonResponse({"data": "sensitive"})
Mixin Classes¶
. AccessControlMixin¶
guard_core.decorators.access_control.AccessControlMixin
¶
Bases: BaseSecurityMixin
allow_countries(countries)
¶
Source code in guard_core/decorators/access_control.py
block_clouds(providers=None)
¶
Source code in guard_core/decorators/access_control.py
block_countries(countries)
¶
Source code in guard_core/decorators/access_control.py
bypass(checks)
¶
Source code in guard_core/decorators/access_control.py
require_ip(whitelist=None, blacklist=None)
¶
Source code in guard_core/decorators/access_control.py
@guard_deco.require_ip(whitelist=[], blacklist=[])- IP address filtering@guard_deco.block_countries(countries=[])- Block specific countries@guard_deco.allow_countries(countries=[])- Allow only specific countries@guard_deco.block_clouds(providers=[])- Block cloud provider IPs@guard_deco.bypass(checks=[])- Bypass specific security checks
. AuthenticationMixin¶
guard_core.decorators.authentication.AuthenticationMixin
¶
Bases: BaseSecurityMixin
api_key_auth(header_name='X-API-Key')
¶
Source code in guard_core/decorators/authentication.py
require_auth(type='bearer')
¶
Source code in guard_core/decorators/authentication.py
require_headers(headers)
¶
Source code in guard_core/decorators/authentication.py
require_https()
¶
Source code in guard_core/decorators/authentication.py
@guard_deco.require_https()- Force HTTPS@guard_deco.require_auth(type="bearer")- Require authentication@guard_deco.api_key_auth(header_name="X-API-Key")- API key authentication@guard_deco.require_headers(headers={})- Require specific headers
. RateLimitingMixin¶
guard_core.decorators.rate_limiting.RateLimitingMixin
¶
Bases: BaseSecurityMixin
geo_rate_limit(limits)
¶
Source code in guard_core/decorators/rate_limiting.py
rate_limit(requests, window=60)
¶
Source code in guard_core/decorators/rate_limiting.py
@guard_deco.rate_limit(requests=10, window=60)- Basic rate limiting@guard_deco.geo_rate_limit(limits={})- Geographic rate limiting
. BehavioralMixin¶
guard_core.decorators.behavioral.BehavioralMixin
¶
Bases: BaseSecurityMixin
behavior_analysis(rules)
¶
Source code in guard_core/decorators/behavioral.py
return_monitor(pattern, max_occurrences, window=86400, action='ban')
¶
Source code in guard_core/decorators/behavioral.py
suspicious_frequency(max_frequency, window=300, action='ban')
¶
Source code in guard_core/decorators/behavioral.py
usage_monitor(max_calls, window=3600, action='ban')
¶
Source code in guard_core/decorators/behavioral.py
@guard_deco.usage_monitor(max_calls, window, action)- Monitor endpoint usage@guard_deco.return_monitor(pattern, max_occurrences, window, action)- Monitor return patterns@guard_deco.behavior_analysis(rules=[])- Apply multiple behavioral rules
. ContentFilteringMixin¶
guard_core.decorators.content_filtering.ContentFilteringMixin
¶
Bases: BaseSecurityMixin
block_user_agents(patterns)
¶
Source code in guard_core/decorators/content_filtering.py
content_type_filter(allowed_types)
¶
Source code in guard_core/decorators/content_filtering.py
custom_validation(validator)
¶
Source code in guard_core/decorators/content_filtering.py
max_request_size(size_bytes)
¶
Source code in guard_core/decorators/content_filtering.py
require_referrer(allowed_domains)
¶
Source code in guard_core/decorators/content_filtering.py
@guard_deco.block_user_agents(patterns=[])- Block user agent patterns@guard_deco.content_type_filter(allowed_types=[])- Filter content types@guard_deco.max_request_size(size_bytes)- Limit request size@guard_deco.require_referrer(allowed_domains=[])- Require specific referrers@guard_deco.custom_validation(validator)- Add custom validation logic
. AdvancedMixin¶
guard_core.decorators.advanced.AdvancedMixin
¶
Bases: BaseSecurityMixin
honeypot_detection(trap_fields)
¶
Source code in guard_core/decorators/advanced.py
suspicious_detection(enabled=True)
¶
Source code in guard_core/decorators/advanced.py
time_window(start_time, end_time, timezone='UTC')
¶
Source code in guard_core/decorators/advanced.py
@guard_deco.time_window(start_time, end_time, timezone)- Time-based access control@guard_deco.suspicious_detection(enabled=True)- Toggle suspicious pattern detection@guard_deco.honeypot_detection(trap_fields=[])- Detect bots using honeypot fields
Configuration Priority¶
- Decorator Settings (highest priority)
- Global Middleware Settings
- Default Settings (lowest priority)