防范XSS攻击,让黑客拿到cookie也无法登陆!

2019年4月4日 482 浏览数 没有评论

  近年来XSS攻击成为了主流,这种攻击原理很简单,黑客将精心构造的JS代码,通过留言或评论的方式提交到系统中,如果系统过滤不严,管理员在后台查阅时,代码就会被执行,登陆的Cookie就被窃取,黑客用此Cookie轻松登陆系统,然后上传木马、提权破坏等等。

  防范XSS攻击,主要在于严格过滤用户提交来的数据,对于PHP语言常用strip_tags、htmlspecialchars等函数来处理。但黑客的手段也千奇百怪,利用各种编码、BUG来逃脱过滤,防不胜防!专业的事要交给专业的人来处理,笔者一般喜欢使用htmlpurifier这款富文本HTML过滤器,它采用白名单机制,能有效过滤掉用户提交表单中的非法HTML标签,防范XSS效果明显!

  当然,随着技术的进步,也有可能出现htmlpurifier过滤不了的情况,我们该想个应对的办法,如何让黑客拿到cookie也无法登陆呢?

  分析系统登陆后发现,大多数的登陆过程都是验证过帐户名和密码之后,在Session中保存登陆成功的标志,然后生成Cookie,每次用户来访问,只要根据Cookie找到对应的Session,验证其中的标志即可。Session好比超市门口的储物柜,Cookie就是条码纸,如果条码纸被别人偷去了,小偷也可打开储物柜。如何防范单一的条码纸开箱?按近来年流行双重验证的做法,让储物柜在生成条码纸的时候,同时记下用户的特征码(如密码、手机号等),这样即使条码纸被小偷偷去,小偷也开不了箱。

  按照这个思路,我们只要对系统稍稍改造即可!用户初次登陆,系统保存登陆成功标志到Session中的时候,同时记下用户的IP地址,然后用户每次请求验证的时候,拿现在的IP地址与Session中的IP进行比较,不符则验证失败,清除Session重新登陆!如此,黑客即使拿到Cookie,由于IP不符,也无法登陆成功!

  参考代码如下:

1
2
3
4
5
<?php
//登陆验证成功后
$_SESSION['LoginAccess'] = 'TRUE';
$_SESSION['IP'] = $_SERVER['REMOTE_ADDR'];
?>
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
//每次请求时验证
If ($_SESSION['LoginAccess'] == 'TRUE'){
	$ip = $_SERVER['REMOTE_ADDR']; 
	If ($_SESSION['IP'] == $ip){
		return true;
	}else{
		return false;
	}
}else{
	return false;
}
?>

  附:在php中为Session的Cookie开启HttpOnly,让黑客获取不到Cookie也是个好办法。开启方法如下:
  PHP5.2以上版本,打开php.ini 设置session.cookie_httponly = TRUE
  或者在代码中开启:ini_set(“session.cookie_httponly”, 1);

分类: 伪编程, 经验技巧 标签:

本博客wuhuaguo.org域名本月25日起停止使用

2019年1月10日 1,571 浏览数 没有评论

  wuhuaguo.org域名跟随了我八年,现如今的我由于工作繁忙早已没有写博的热情,所以自本月25日起弃用不再续费!为了能使本博客继续访问,启用了 http://wuhuaguo.lifeskillcn.com 二级域名。

分类: 生活琐记 标签:

为KindEditor在线编辑器增加图片水印和缩略图功能

2018年3月9日 43,485 浏览数 没有评论

  轻量级开源KindEditor在线编辑器非常好用,虽然作者已多年不更新了,但阻挡不了我对它的喜爱。在使用之中,总是想为它加点功能,这样便可使工作更高效!

  我们在图片上传时总想自动添加水印和生成缩略图,但这些实用小功能却没见有人制作,遂Google一下资料自己捣鼓了一个,分享给大家!

  直接放出源码,对应版本为最新的“4.1.11”:

  第一步:修改\editor\kindeditor-all.js中的第7000行,用下面代码替换

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
hiddenElements.join(''),
'<label style="width:60px;">' + lang.localUrl + '</label>',
'<input type="text" name="localUrl" class="ke-input-text" tabindex="-1" style="width:200px;" readonly="true" /> &nbsp;',
'<input type="button" class="ke-upload-button" value="' + lang.upload + '" />',
'<div class="ke-dialog-row">',
'<label style="width:60px;">是否水印</label>',
'<label><input name="iswater" type="radio" value="1" />加水印</label>',
'<label><input name="iswater" type="radio" value="0" checked="checked" />不加水印</label>',
'</div>',
'<div class="ke-dialog-row">',
'<label style="width:60px;">缩略图</label>',
'宽:<input name="thumb_width" type="text" class="ke-input-text" style="width:40px;" /> ',
'高:<input name="thumb_height" type="text" class="ke-input-text" style="width:40px;" />',
'</div>',
'</form>',
'</div>',
'</div>'

  目的是:在图片上传对话框中设置水印和缩略图选项,以便可控。
阅读全文…

2017,重要的一年!

2017年12月31日 26,000 浏览数 没有评论

  2017,对于我来说是个非常重要的一年!
  这一年,我搬进了新居,从此结束了四年的每天四十多公里单车通勤;孩子转学进了新学校,从此不再费心接送。
  这一年,做事无比顺利,生活中遇到的问题都轻松解决了。是不是上天有意眷顾了我这个一直悲摧的人?
  这一年,除了住房公积金贷款还在慢慢还,其它的借款全部还清!做人,诚信最重要!
  这一年,工作稳定了下来,不再过多焦虑,并渐渐懂得了,选对合作伙伴是多么重要!
  这一年,是《生活妙招网》运行十周年!非常庆幸能坚持下来,在我生活最困难的时候给了我莫大的帮助。
  这一年,认清了很多人,也认清了很多事,心态变得更平和~

  明天就到2018年了,回想28岁之前的我,像个傻瓜一样,做错了很多事,得罪了很多人!愿在新的一年里,做好每一件事,善待每一个人,家人平安!幸福!

分类: 生活琐记 标签:

海王星病了!

2017年12月29日 3,771 浏览数 没有评论

  海王星踏板摩托自买来之后,一直很好很少出问题。这也可能和我骑得少有关,七年了才骑了两万多公里,和它一起买的单车都骑五万多公里了。平时短距离都是单车,节假日带孩子出门玩才骑它。近三年来,由于要往返很多地方,包括接送孩子上学,骑得多一点。海王星一直像个忠实可靠的伙伴陪伴着我们。

  2017年,为了孩子上学以及我上班方便,我们家搬进了新居。距离近了,海王星也闲下来了,一周能骑上一次就不错了。近来天冷了起来,早晨都到了零度以下了。以往,海王星都是一触即发,像去年零下十几度都能轻松打起火,而今天却死活打不着了。电打火打不动,脚踹启动杆也发动不起来了,折腾了一上午也没搞定,心里慌慌的!检查电池,发现喇叭声正常,大灯正常。脚踹时,有时会嗡的一声,喷出一点烟,又悄无生息了。检查发动机,发现缸头上有很多机油,怀疑是从缸内渗出来的,担心发动机会出问题,就没再继续折腾。

  忙了一周的工作,同时又去武汉出个差,心里一直惦记着它。出差回来第一件事就与LD一起,用电动车将海王星拖到维修站,彻底查一查。维修站的小哥经验丰富,说天冷电池亏电造成动力不足而打不起火。他拿出一块电池,拆下原电池搭了上去,按住电门,嗡嗡几下就打起火了。LD兴高彩烈,我心里也一块石头落地了!

  海王星正热着车,小哥的师傅从外面回来了,我向他说明缸头渗油的事,他看了一眼,“海王星啊!发动机不会坏的,可能是油管的事”,他关上电门,把缸头上的那根机油管拔了下来,果然是裂了个小口子,机油就是从这口子渗出来的。他把油管裂口处剪掉,重新装好,又应我的要求重新更换了机油,我的海王星又可以一触即发,欢快地跑动啦!

  天冷摩托车打不着火是很正常的事,但对我来说却是个麻烦事。由于城市禁摩,卖摩托的越来越少了,修摩托的也没几家了。我对新家周围又不太熟悉,能从地图上找到的维修点距我也有七八公里远。这说明我需要花半天到一天的时候来专门处理这事,如果发动机坏了,车子要放在维修站,我还得要再去一次。天这么冷,我又这么忙,实在不想折腾。

  人老了,精力有限,对很多事物都没了兴趣。但海王星陪伴了我七年,像个老朋友有感情了!这次病了,让我担心了好多天~~~特此记录一下!