SuperAPI AI 工具集

django-security

安全与审计

查看项目

更新于 10-15 08:34

技能介绍

Django 安全(django-security)是一套针对 Django 应用的安全最佳实践指南,帮助防范常见漏洞。\n\n用途\n\n适用于设置 Django 认证与授权、实现用户权限与角色、配置生产环境安全设置、审查 Django 应用安全问题,以及将 Django 应用部署到生产环境等场景。\n\n主要能力\n\n核心安全设置(生产配置):DEBUG 必须为 False,ALLOWED_HOSTS 通过环境变量读取,启用 SECURE_SSL_REDIRECT、SESSION_COOKIE_SECURE、CSRF_COOKIE_SECURE、HSTS(含子域与 preload)、SECURE_CONTENT_TYPE_NOSNIFF、SECURE_BROWSER_XSS_FILTER、X_FRAME_OPTIONS 为 DENY;SESSION/CSRF Cookie 开启 HTTPONLY 与 SameSite=Lax;SECRET_KEY 必须由环境变量提供,缺失时抛出 ImproperlyConfigured;密码校验器包含相似度、最小长度 12、常见密码与纯数字校验。\n\n认证:可自定义用户模型(AbstractUser,使用 email 作为 USERNAME_FIELD),配置 AUTH_USER_MODEL;密码哈希器推荐 Argon2 优先,并保留 PBKDF2 等;会话可配置为 cache 或 db 后端、Cookie 有效期、是否每次请求保存、是否浏览器关闭失效。\n\n授权:模型级 permissions 自定义权限,视图中使用 LoginRequiredMixin、PermissionRequiredMixin 并设置 raise_exception;REST framework 自定义权限类(IsOwnerOrReadOnly、IsAdminOrReadOnly、IsVerifiedUser);基于角色的访问控制(RBAC)在用户模型中定义 role 字段与辅助方法,并提供 AdminRequiredMixin。\n\n注入与 XSS 防护:优先使用 Django ORM(自动转义参数),raw() 必须使用 %s 参数化,复杂查询使用 Q 对象;模板默认自动转义,仅在可信内容使用 |safe,用户输入先 escape 再 mark_safe,或使用 format_html;可通过自定义中间件设置 X-Content-Type-Options、X-Frame-Options、X-XSS-Protection 与 CSP。\n\nCSRF:默认启用,配置 CSRF_COOKIE_SECURE、CSRF_COOKIE_HTTPONLY、CSRF_COOKIE_SAMESITE 与 CSRF_TRUSTED_ORIGINS;表单使用 {% csrf_token %},AJAX 通过读取 csrftoken Cookie 并放入 X-CSRFToken 请求头发送;仅必要时使用 csrf_exempt。\n\n文件上传:使用 python-magic 或纯 Python 的 filetype 检测 MIME,并结合扩展名校验;校验文件大小(示例最大 5MB);媒体文件建议使用独立域名或对象存储,不直接由应用提供。\n\nAPI 安全:REST framework 配置限流类与速率(如匿名 100/天、用户 1000/天、上传 10/小时),支持自定义限流;认证方式可配置 Token、Session 与 SimpleJWT,并将默认权限设为 IsAuthenticated。\n\n其他:CSP 中间件与各项 CSP 指令配置;使用 django-environ 等读取 .env 管理密钥(.env 不应提交);配置 django.security 与 django.request 日志记录安全事件;文末提供快速安全检查清单(DEBUG=False、仅 HTTPS、强密钥、密码校验、CSRF 防护、XSS 防护、SQL 注入防护等)。\n\n使用方式\n\n按主题参考对应代码示例,将配置片段应用到 settings、models、views、permissions 与中间件中;涉及第三方库(如 argon2、python-magic、filetype、djangorestframework-simplejwt 等)需自行安装。\n\n适用场景与限制\n\n适合 Django 项目的安全配置搭建、代码审查与上线前加固。资料未说明具体版本要求、价格或收费信息,也未提供完整安装步骤,相关事实暂未提供。