客户端伪造 cookie 的方法和防范

栏目: 编程工具 · 发布时间: 5年前

内容简介:一个朋友有个很古老很古老的网站,使用了asp搭建,流量还很大,最近测试了下 WEB园,性能提升很大。需要改 session 为 cookie 方式保存 会话信息,让我给提 安全方面的建议。实际 Session 和 Cookie 除了保存状态,安全方面都差不多。唯一需要注意的就是 不要 通过 cookie 保存 用户敏感信息(比如密码),防止中间人获取信息。密码加了md5也不安全,因为还有cmd5.com。另一个需要注意的就是 用户 可以通过 js 伪造 cookie信息。以下面的例子为例:

一个朋友有个很古老很古老的网站,使用了asp搭建,流量还很大,最近测试了下 WEB园,性能提升很大。需要改 session 为 cookie 方式保存 会话信息,让我给提 安全方面的建议。

实际 Session 和 Cookie 除了保存状态,安全方面都差不多。唯一需要注意的就是 不要 通过 cookie 保存 用户敏感信息(比如密码),防止中间人获取信息。密码加了md5也不安全,因为还有cmd5.com。另一个需要注意的就是 用户 可以通过 js 伪造 cookie信息。

以下面的例子为例:

正常 用户登录后,会保存 用户的状态,比如下面的代码:

user_name = "user01"
user_level = 1
response.cookies("username01") = user_name
response.cookies("userlevel01") = user_level

其他页面如果需要判断用户登录信息,可以通过判断cookie,一般代码如下:

response.write "<br>用户: " & request.cookies("username01")
response.write "<br>级别: " & request.cookies("userlevel01")

正常是没有问题的,加入 用户比较懂技术,可以通过 js 修改用户名和级别:

document.cookie='username02=user02';
document.cookie='userlevel02=2';

这样就悲剧了,如下面的演示,用户名和级别可以随便改。

客户端伪造 cookie 的方法和防范

修改方法也比较简单,在 用户登录成功后,增加个 单独的 cookie,比如hash,代码如下:

'-----公共配置---------------
salt = "防止被猜出规则,增加的额外的字符串"
'-----其他代码---------------
user_name = "user01"
user_level = 1
response.cookies("username02") = user_name
response.cookies("userlevel02") = user_level
response.cookies("hash02") = md5(user_name & user_level & salt)

读取用户时,读取 hash 判断是否相同,如果不同,则cookie被篡改了

'-----公共配置---------------
salt = "防止被猜出规则,增加的额外的字符串"
'-----其他代码---------------
response.write "<br>用户: " & request.cookies("username02")
response.write "<br>级别: " & request.cookies("userlevel02")
if request.cookies("hash02") = md5(request.cookies("username02") & request.cookies("userlevel02") & salt) then
	response.write "<br>没有修改过"
else
	response.write "<br><span style='color:#CC0000'>已经被篡改</span>"
end if

这样用户通过JS修改cookie,也会被程序发现的。

document.cookie='username02=user02';
document.cookie='userlevel02=2';

下面的演示可以看到,cookie已经被修改。

客户端伪造 cookie 的方法和防范

所有相关的代码,已经打包成一个压缩包,方面大家下载测试: http://www.miaoqiyuan.cn/products/cookie_test.rar


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

21天学通C语言

21天学通C语言

(美国)琼斯(Bradley L.Jones) (美国)埃特肯(Peter Aitken) / 信达工作室 / 人民邮电出版社 / 2012-8 / 69.00元

《21天学通C语言(第6版•修订版)》是初学者学习C语言的经典教程。本版按最新的标准(ISO∕IEC:9899-1999),以循序渐进的方式介绍了C语言编程方面知识,并提供了丰富的实例和大量的练习。通过学习实例,并将所学的知识用于完成练习,读者将逐步了解、熟悉并精通C语言。《21天学通C语言(第6版•修订版)》包括四周的课程。第一周的课程介绍了C语言程序的基本元素,包括变量、常量、语句、表达式、函......一起来看看 《21天学通C语言》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具