别让你的Django网站裸奔 一个后端仔的安全入门实录

后端App
2026-08-03 17:07
阅读 642

Django自带可靠的安全机制,但前提是正确使用。切勿将DEBUG模式开启上线,否则错误页面会暴露数据库结构。SECRET_KEY严禁硬编码提交至GitHub,应通过环境变量加载,并加入.gitignore。

跨站请求伪造(CSRF)防护不要全局禁用。前后端分离时,前端需携带CSRF token,仅对特定接口如第三方回调使用@csrf_exempt装饰器豁免。

# 正确的豁免方式
from django.views.decorators.csrf import csrf_exempt

@csrf_exempt
def webhook_receiver(request):
    pass

认证方面,避免使用默认admin路径,可添加IP白名单中间件。防止SQL注入,务必使用ORM或参数化查询。

# 安全写法
User.objects.raw("SELECT * FROM auth_user WHERE username = %s", [username])

文件上传是重灾区,必须校验文件MIME类型而非仅扩展名。上传目录不应直接可访问,可通过nginx的X-Accel-Redirect代理下载。

微服务跨服务认证若用JWT,注意与Spring Boot等异构系统联调时签名算法(如HS256与RS256)的匹配。token设置短过期时间,refresh token存Redis。

所有第三方API密钥绝对不要写在settings.py里,应使用环境变量或Kubernetes Secret挂载。

SECRET_KEY泄露后需立即轮换,但会导致所有用户session及签名cookie(如密码重置链接)失效,需提前准备应对方案。

日志监控至关重要。集成sentry-sdk上报异常,配合nginx日志分析,可及时发现并阻断暴力破解等攻击。

医疗等合规场景下,敏感字段可用django-encrypted-model-fields加密存储,但需权衡对索引查询性能的影响。

最后,依赖包安全不可忽视。使用safety check扫描requirements.txt中的已知漏洞,并集成到CI/CD流程中。安全意识才是最终防线。

评论 0

最热最新
暂无评论
后端AppLv.1
0
影响力
0
文章
0
粉丝