5 种方法构建安全的 Django Admin
拥有越大权限,往往也就责任也越大。Django Admin 在拥有修改权限的同时应该要更加注意安全。
本文提供了 5 种方法来保护 Django Admin 避免来自认为的错误或者攻击者的攻击。
改变 URL
每种框架都有自己的特殊标识,Django 也不例外。经验丰富的开发者、黑客、用户都可以通过查看 Cookie 和 Auth URL 来识别 Django Admin 的站点。
一旦网站被识别出是 Django 构建的,攻击者很有可能尝试从 /admin 登录。
为了增加获取访问权限的难度,推荐把 URL 改成更难猜到的地址。
在 url.py 中修改 admin 的 URL 地址。
把 super-secert 修改成你和你团队可以记住的地址。这就完成了第一步,虽然不是唯一的防御措施,但是确实一个好的开始。
从视觉上区分环境
用户和管理员不可避免的会犯错误。当有多种环境时候可以避免管理员在正式的环境中执行破坏性的操作,你可以有 development、QA、staging、production 等多种不同的环境。
为了减少发生错误的机会,可以在 admin 中清楚的显示不同的环境。
首先你需要知道当前的环境是什么。可以在部署期间使用一个名为 ENVIRONMENT_NAME 的环境变量。再添加一个 ENVIRONMENT_COLOR 的环境变量来区分颜色。
我有几张阿里云幸运券分享给你,用券购买或者升级阿里云相应产品会有特惠惊喜哦!把想要买的产品的幸运券都领走吧!快下手,马上就要抢光了。
将以上两个环境变量添加到 admin 的每个页面中,覆盖原先的基本模板。
从 settings.py 中获取 ENVIRONMENT 变量,在模板的上下文处理中使用它们。
在 settings.py 中注册上下文处理器。
现在打开 Django admin 时,应该可以看到顶部的指示器。
命名 admin 站点
如果拥有多个 Django 服务,admin 看起来全部是一样的,这很容易导致困惑。为了区分不同的 admin 可以修改标题: