django-cas可能引起的安全漏洞
文章目录
我之前改造了kstateome/django-cas,使其适合Open edX使用(wwj718/django-cas),今早去某高校,讨论些东西,期间谈到需要可能更改cas的既有逻辑,于是回来重新翻了下wwj718/django-cas的源码,发现其中有一个潜在的安全隐患
隐患的代码为user = User.objects.create_user(username, ‘’)
后果
所有由CAS引入系统的用户,初始化密码为空!可以在Open edX的默认登录系统中被无密码登录
触发条件
可能触发隐患的上下文是,系统采用cas的同时,还保留了原始的登录系统,而且默认情况就是如此
CAS的登录入口和edx默认的登录路口是并列关系(这可能带来很多问题)
|
|
注意url里的name,会覆盖原先的reverse,这是django的url机制引起的
策略
把cas作为唯一的登录方式,基本的做法是,覆盖原先的登录入口(修改url,注视掉原先的登录入口,不过edx的登录是以ajax的方式,禁用url可能还不够安全,更多细节我暂时没时间查看),更为彻底的做法是禁用django的默认认证后端
todo
模仿mitocw/django-cas的做法,不允许密码登录
|
|
值得一提的是mitocw/django-cas也用了django的User,这样一来,不还是有关联profile的问题么
文章作者 种瓜
上次更新 2016-06-01