前言
想起前段时间,我是非常抵触看官方文档的。官方文档是什么东西,我就算自己看源码学,我也不会看你文档一点!现在发现文档是真的香啊。
那之前我想自定动作的时候, 我头是真的铁. 我居然自己看: https://b23.tv/NQuKiI, 实际上人家官方就有详细的文档
新版写的写法
我大致翻了一下文档, 权限认证呢?我记得阅读 delete_selected()
源码的时候。是有权限认证的呀. 难道新版不需要了?仔细翻了一下,原来注解可以限制权限了。
我去翻了一下源码,新版本(3.2.3)的默认动作加上了注解。设置了所需权限和描述.
权限认证漏洞
我开始担心起来. 是否有人没有注意到需要设置权限或进行权限认证呢 ?更坏的情况是他写了文章,而且已经有人参考并跑在线上了。
我百度随便翻了几篇, 都没有写权限验证的内容。其中一篇文章有18万的阅读量, 还包括某乎的文章.
漏洞验证
运气好的是,Django 的设计是以 POST
的方式请求当前页面,进行处理。 参考: https://b23.tv/6ZRcEb, 也可以自己去翻源码: \site-packages\django\contrib\admin\options.py: def response_action()
这样的设计设下了一次验证,我们需要是 职员/管理员 身份才能进入后台。所以我新建了一个用户并给了职员的身份,是用户是否可以登录到此管理站点。
但是没有任何的权限,所以登录后台也看不到任何东西。不得不感叹一句 Django 验证真好
现在加上最基本的 view 权限,让他可以查看内容,仅仅只是查看。
action
暴露出来了,且能用。
危害
原本的设计是我只有查看的权限,但因为 action
的开发不规范,用户可以做到了本做不到的,越权产生了, 但条件苛刻, 那如果职员账号是弱密码呢? 如果你的站点也有这样的职员账号,请检查 action
是否规范开发。