管理后台的登录功能-重新思考

每个网站、APP都几乎必然有其管理后台,其中管理的内容则是公司的核心技术财产。而登录模块则是这扇大门,其安全的重要性可想而知。我们知道,功能越多,安全性就会越低,所以我们有必要重新审视一下,管理后台的登录界面到底需要些什么功能。
一、功能模块的取舍
1、基本的账号密码登录。这个无可避免是必然需要的了。
2、图片验证码。验证码的目的是为了阻止机器人暴力撞库,作为管理后台很有必要,而且是要每次登录请求都需重新验证。
3、填完用户名或密码时,Ajax实时验证。这个功能常见于一些自动管理后台的注册模块,用于验证用户名是否已被占用。但此功能通常会导致不需经过验证码验证,从而使得暴力撞库有机可乘。
4、记住我选项。这是一个使用cookie记住登录用户的功能,使用户下次再来时可以不需要再登录即可通过验证。但cookie必然需要记录 用户ID或用户名 相关的信息,存在浏览器中,有一定的CSRF攻击风险和信息泄漏风险。
5、找回密码功能。这是一个高危功能,无论是逻辑疏漏还是安全不严谨,都会导致账号的失窃。参考1月份支付宝找回密码的危机。所以建议做法是,公司文档保存相关的账号密码信息,如遇实在无法登录,则找技术人员进入数据库修改密码(加密后)。
6、注册功能。这个不要做在外面,在后台的功能里加一个添加用户会安全很多。
7、第三方登录。如QQ登录、微信登录?不需要,大家都知道QQ很容易被盗号,不宜作为安全性要求高的系统的登录入口。微信则需要拿手机出来扫码,不如直接输入密码来得方便,另外它还需要申请微信公众号以及500块每年的公众号认证费用。
综上,得出一个够用、安全的管理后台的登录界面

二、安全功能
1、验证码安全。以AJAX提交为例,每次尝试登录后,无论是否登录成功,后端都要注销当前验证码SESSION,前端JS刷新验证码。后台要注销SESSION是以免黑客屏蔽JS导致验证码只需一写次,从而导致爆库。
2、网络传输安全。最好使用https加密,以免网络传输过程泄露账号密码,如在咖啡店等他人WIFI环境。如果没有使用HTTPS,则应该在前端JS加密登录名和密码,后端再解密。因为JS是明文的,所以要使用非对称性加密(如RSA),JS使用公钥加密,服务端使用私钥解密。甚至对JS文件本身也可以作一些加密压缩。为什么登录名也要加密呢?还是避免信息泄露,以免别人根据登录名猜出密码。
3、登录成功时重新生成SESSION_ID。主要是为了防止固定会话ID的CSRF攻击
三、登录日志
知己知彼,战斗才能胜利。上面这些功能和安全,都是一些通用的防守攻击套路。但敌人在暗我在明,敌人什么时候派出过特务,什么时候发出过攻击,发起了什么样的攻击?仅通过上面的功能,我们无从得知。所以,我们还需要一个监控器--登录日志。
然后这个登录日志,我们需要记录些什么东西呢?登录名、是否成功、IP地址、时间。但是,这还不够,这样我们只能分析到了是谁有攻击我们,但是分析不到他是通过什么方式来攻击。那还要记录什么呢?URL地址(含GET数据)、POST数据。但需要注意的是,我们登录时的密码也在POST数据里,切不可将密码存储在登录日志里,即使是RSA加密过的也不行,应以***星号代替,否则这和明文存储密码没什么差别。
四、前端代码
前端代码的要点是登录时RSA加密账号密码,使用的是jsencrypt.js 库,Ajax提交表单用的是 jquery.form.js 。核心代码如下,需要注意的是,ajaxForm接受的这两个回调函数,参数名是固定的无法修改,修改表单数据用的是formData,提交成功回调的结果名是responseText。
PS:形如<?=$XX?>的两个变量是PHP变量。

//AJAX提交登录表单
$(function(){
    varformSubOpt ={
        beforeSubmit: encodeForm,
        success: formRes
    };
    $("#loginform").ajaxForm( formSubOpt );
});
//提交成功
function formRes(responseText){  //参数名要为这个
    //console.log(responseText);
    ajaxAlerts(responseText);//弹出提示,用的是我自己写的一个函数
    if(responseText.code<0){
        changeVer();
        $("input[name=ver]").val("");
    }
    if(responseText && responseText.code===0){
        setTimeout(function(){
            location.href= "<?=$toURL?>";
        },750);
    }
}
//RSA加密账号密码
varRSApubKey = "<?=$RSApubKey?>";  //注意这里的密码不能包含换行符
//console.log(RSApubKey);
function encodeForm(formData){
    //console.log(formData);    //这是要提交的参数
    var crypt =new JSEncrypt();
    crypt.setKey( RSApubKey );
    var user = crypt.encrypt( $("input[name=name]").val() );
    var pwd = crypt.encrypt( $("input[name=psw]").val() );
    //console.log( pwd );
    formData[0].value = user;
    formData[1].value = pwd;
}

五、后端代码
略。按前面的分析思路来写即可

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,384评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,845评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,148评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,640评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,731评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,712评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,703评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,473评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,915评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,227评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,384评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,063评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,706评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,302评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,531评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,321评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,248评论 2 352

推荐阅读更多精彩内容