django-secux

Usage


Rate Limiting (+)

from django_secux.decorator import ai_ratelimit

@ai_ratelimit()
def protected_view(request):
    return HttpResponse("Protected content")

and a receiver for when blocked:

from django.dispatch import receiver
from django_secux.signals import attack_detected

@receiver(attack_detected)
def log_attack(sender, **kwargs):
    request = kwargs.get("request")
    path = kwargs.get("path")
    reason = kwargs.get("reason")
    ip = request.META.get("REMOTE_ADDR") if request else "unknown"
    user_agent = request.META.get("HTTP_USER_AGENT", "unknown") if request else "unknown"
    count = kwargs.get("count")

    log_message = "[SECUX] Attack detected:\n"
    log_message += f"  View: {sender.__name__ if sender else 'unknown'}\n"
    log_message += f"  Path: {path}\n"
    log_message += f"  IP: {ip}\n"
    log_message += f"  Reason: {reason}\n"
    log_message += f"  User-Agent: {user_agent}\n"

    print(log_message)

[!Tip] You can use it for EMAIL and Webhook and Log. —

Fake CDN System (+)

  1. Add to your urls.py:
from django_secux.views import cdn_serve

urlpatterns = [
    ...
    path('cdn/<path:file_path>', cdn_serve, name='cdn'),
]
  1. Run collectstatic:
python manage.py collectstatic
  1. Use in templates:
<!-- Basic usage -->
<img src="/cdn[ STATIC ]">

<!-- With resizing -->
<img src="/cdn[ STATIC ]?size=250">

Smart Minify

Minification of HTML/CSS/JS (+)

MIDDLEWARE = [
    ...
    'django_secux.middleware.Minify'
]

Use for css/js

<link rel="stylesheet" href="/cdn{% static 'style.css' %}" />

...

<script src="/cdn{% static 'script.js' %}"></script>

User Session Management (+)

import django_secux.user as dsu

Create New Session

dsu.create_session(user, session_key, ip=None, user_agent=None)

Check If Session Exists

dsu.check_user_session(user, session_key)

Get User Sessions

dsu.get_user_sessions(user)

Get All Sessions

dsu.get_all_sessions()

Terminate a Session

dsu.terminate_session(user, session_key)

Check If Session is Active

dsu.is_session_active(session_key)

Utility Tools (+)

import django_secux.tools as dst

Get user ip

dst.get_user_ip(request)

Get user agent

dst.get_user_agent(request)

Get referer url

dst.get_referer_url(request, default)

Is request secure

dst.is_request_secure(request)

Get user meta

dst.get_user_meta(request)

Get request headers

dst.get_request_headers(request, prefix)

Get client timezone

dst.get_client_timezone(request, default)

Is mobile device

dst.is_mobile_device(request)

Get client fingerprint

dst.get_client_fingerprint(request)

Optimize ImageField (+)

Import

from django_secux.models import OptimizeImageField

Usage in models

image = OptimizeImageField(upload_to='image/', name=f'image.jpg', size=(300, 300))

Example

from django.db import models
from django_secux.models import OptimizeImageField

class Test(models.Model):
    avatar = OptimizeImageField(upload_to='test/', name=f'test.jpg', size=(300, 300))

Captcha (+)

Usage in views

from django_secux import captcha

def your_views(request):
    if captcha.is_captcha_valid(request):
        return HttpResponse(f'Success!')
    else:
        return HttpResponse(f'Failed!')

Usage in templates

{% load secux_captcha %}
...
<img src="{% captcha_src %}">
<input name="secux_captcha_input">

JS Challenge (+)

Usage in views

from django_secux.decorator import js_challenge

@js_challenge
def your_views(request):
    return HttpResponse('Hello world!')

Honeypot (+)

Usage

MIDDLEWARE = [
    ...
    'django_secux.middleware.Honeypot'
]

Previous Menu Next