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

2019年4月4日 1,891 浏览数 没有评论

  近年来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);

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

potplayer播放器的真实官网

2014年10月28日 6,454 浏览数 1 条评论


  自从kmplayer搞了“小花招”之后,就从我的系统中彻底消失了。替代它的是它原作者的新作potplayer。当我们从谷歌上搜索它时,总是先找到“http://www.potplayer.org/”网站,这个自称为官网的网站并不是真正的官网,可能是国内的一个爱好者制作的。真正的官网地址是:http://potplayer.daum.net/?lang=zh_CN

  比较一下两个站你就会发现potplayer.daum.net,有版本更新记录,有可靠的下载链接,还提供多种语言,32位和64位版本等,给人的感觉就非常可靠。potplayer.org上的版本号一直都比官网的高,不知何故?

  感觉有必要记录一下,以方便有此需要的朋友!

分类: 经验技巧 标签:

关于刷票机的分析及应对

2013年5月28日 8,880 浏览数 3 条评论

  上面这张图是典型的刷票机工作记录表,从图上有两点发现:一是刷票机没有采用伪造HTTP头的办法突破IP限制(HTTP_X_FORWARDED_FOR中没有路由中转地址),估计是HTTP代理(IP没有规律);二是刷票机采用多线程高频率来发送数据,这样会造成IIS负载增大,以致无法响应其它用户的请求,所以在一小段时间里都是该刷票机的记录。

  刷票机之所以能如此疯狂地工作,前提是它要突破两道限制,一是验证码,二是IP地址。

  验证码是防机器最有效的手段,可我没有能力写出坚强的验证码,所以一直以来都在寻找免费开源产品。最先考虑使用Google的reCAPTCHA的验证码系统,但由于实在不易辨认以及“墙”的原因很多地方无法显示,而被迫放弃。后来又找到国内的“皕应HCaptcha”验证码,不知是由于免费版的缘故还是其它什么原因,该验证码仍然可以被破解。对此我没有办法,只能今后加强学习,弥补此处的不足。

  关于IP限制是一个地址只能投一票,据我所知目前有四种方式突破: 阅读全文…

分类: 经验技巧 标签: , ,

恢复win7开始菜单旁的“显示桌面”图标

2013年3月27日 8,376 浏览数 1 条评论

  虽说win7任务栏右侧有“显示桌面”按钮,但违反了我的使用习惯,使用起来总感觉很别扭,所以动手恢复类似winxp中的“显示桌面”图标。

  步骤如下:

  1、右击任务栏,工具栏→新建工具栏。
  2、选中%userprofile%\AppData\Roaming\Microsoft\Internet Explorer目录下的Quick Launch文件夹,单击“选择文件夹”。
  3、右击任务栏,将“锁定任务栏”的勾去除,再把Quick Launch工具栏拖到最左边。
  4、右击Quick Launch工具栏,将“显示文本”、“显示标题”两项前的勾去除。
  5、在%userprofile%\AppData\Roaming\Microsoft\Internet Explorer目录下新建文本文件,内容如下:

[Shell]
Command=2
IconFile=%SystemRoot%\system32\SHELL32.dll,34
[Taskbar]
Command=ToggleDesktop

  文件名称改为:显示桌面.scf

  6、此时任务栏上已经出现“显示桌面”图标了,接着锁定任务栏。

  “好记忆不如烂笔头”,以备后用!

分类: 经验技巧 标签: ,

更改TeamViewer默认会占用80端口问题

2011年10月18日 16,601 浏览数 没有评论

  今天在自己电脑上搭建个“WampServer”集成环境,完成后在浏览器里输入“http://127.0.0.1”,却发现80端口被TeamViewer占用了,我又不想为“WampServer”另配端口,就准备将TeamViewer占用的80端口给关闭掉。谷歌一下解决方案,发现大多是更改注册表设置,很不爽。我使用的是TeamViewer 6.0版本,在查看选项时在高级设置里发现了相关选项,勾选“请勿使用接收端口80和443(仅推荐网络服务器使用)”即可!

分类: 经验技巧 标签: