别让你的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流程中。安全意识才是最终防线。
标签:ElevenLabsSpring BootLlamaPHP
为你推荐
暂无相关推荐

评论 0