网站如何防Session冒名顶替和cookie防篡改
做网站难免要面对安全性的问题,诸如sql注入拉,cookie冒名拉,等等,sql注入算是老生常谈,翻翻旧账有不少优秀的帖子在说明这个问题,所以我们来说说Session冒名顶替的风险以及应对的办法。 首先要说Session冒名顶替,就得说说Session的原理。Session是一个在服务器端保持会话的机制,其实在Http协议里并没有规定 Session这个东西,所以他的实现方式就有点千奇百怪,不同的Web框架下Session的实现机制都是不一样的。但是原理都是大同小异的,这里普遍应用的机制是通过Cookie来存储一个会话的票据(也就是SessionID),服务端在cookie里取得SessionID后就去存储 Session的后端(可以是进程里,数据库,或者其他任何可以存储数据的东西,包括文件)去获取这个会话的数据。 我们用一个抓包工具来获取一段数据看看,如下: GET /w3/global/j/global.js HTTP/1.1 Accept: */* Referer: http://www.jiayuan.com/login/index.Php?pre_url=/usercp Accept-Language: zh-cn Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; EmbeddedWB 14.52 from: http://www.bsalsa.com/ EmbeddedWB 14.52) Host: images.jiayuan.com Connection: Keep-Alive Cookie: SESSION_HASH=aa200d999de428f8e84ad56f4fc0afb9ac88fb78; stadate1=25727411; myloc=53%7C5301; myage=24; mysex=m; myuid=25727411; myincome=30; last_login_time=1277561249; new_msg=0; pop_1268278480=1277575662747; pop_time=1277561290653 标红字的地方就是SessionID了,当然asp.NET有一种Cookieless的机制,是把这个ID放在url里传递。 这里就有一个问题,这个ID在非SSL的环境下提交是明文的,所以如果这个ID被窃取,然后就可以冒名顶替别人的身份了(注:大多数框架的设计中 Session一旦被创建后,SessionID的值就固定了,不会变)。 这涉及到Web开发中的一个说法,就是客户端的任何输入都是不可信的,所以Cookie作为在客户端保留的数据,在没有防篡改机制的保护下,其内容也是不可信任的。一旦信任了这样的数据,就会存在一个安全上的隐患。 那么如何来防范呢,这里我们需要实现cookie防篡改的功能。Cookie防篡改功能的原理很简单。假设我有一个值要写入Cookie key="user_name" value="alexander" 如果需要防止这个值被篡改成其他的值是不可能的,因为cookie已经写到了客户端,别人可以随意的改,服务器是没办法阻止的,但是我们可以用防篡改的机制来让服务器知道cookie的值被篡改过。所以在向客户端发送cookie的时候就不能原样发回去了,我们在Cookie的值后面跟上一段防篡改的验证串,整个作为一个整体发送到客户端。所以客户端得到的cookie可能就是这个样子: user_name=alexander|ab95ef23cc6daecc475de 用|分割的后面部分就是验证串,也可以叫防篡改验证串。它是这样生成的, DES(cookie的内容+盐值) 也可以用 MD5(cookie内容+密钥)也可以是SHA1(cookie内容+密钥),这里的密钥只有站点本身知道,如果这个都泄漏了那就真完蛋了。这个值在服务器接收到Cookie以后,就可以用Cookie的内容+密钥重新计算一次验证串,和提交上来的做比对,如果是一致的,我们就认为cookie没有被篡改,反之,cookie肯定被篡改过,我们就不要相信这一次提交。如果所有的Cookie都经过防篡改验证,那么也就不用担心SessionID被冒名顶替的事情发生了。 ASP.NET的sessionID我不知道是否有这个机制(汗颜,以前一直没关注过)不过Cookie是没有的,所以大家可以自己动手来增加这个功能,这样对于提高站点的安全性是有非常大的帮助的。
网站如何防Session冒名顶替和cookie防篡改的更多相关文章
- XSS,CSRF,Cookie防劫持的处理
Cookie与sessionHTTP天然是无状态的协议, 为了维持和跟踪用户的状态, 引入了Cookie和Session. Cookie包含了浏览器客户端的用户凭证, 相对较小. Session则维护 ...
- Cookie防篡改机制
一.为什么Cookie需要防篡改 为什么要做Cookie防篡改,一个重要原因是 Cookie中存储有判断当前登陆用户会话信息(Session)的会话票据-SessionID和一些用户信息. 当发起一个 ...
- Application对象、Session对象、Cookie对象、Server对象初步认识
Application对象:记录应用程序参数的对象 用于共享应用程序级信息,即多个用户共享一个Application对象.在第一个用户请求ASP.NET文件时,将启动应用程序并创建Applicatio ...
- PHP 实现多网站共享用户SESSION 数据解决方案
PHP 实现多网站共享用户SESSION 数据解决方案 来源URL:http://blog.csdn.net/dongdongzzcs/article/details/6906613 一.问题起源 稍 ...
- 关于requests的session方法保持cookie的问题。
最近在做爬虫的时候遇到了一个问题,在用requests的session方法保持cookie的时候发现requests不能保持手动构建的cookie.起初以为requests只能自动保持由服务器返回的s ...
- Session会话与Cookie简单说明
会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端 ...
- cookie和session以及iOS cookie的查取
Cookie的工作原理 http是无状态的,这是什么意思呢?就是说,在没有cookie之前,你第一次访问这个页面和第二次访问这个页面, 服务器是不知道的,不知道前一次是你.那么问题来了,我怎么登录,登 ...
- session共享原理以及PHP 实现多网站共享用户SESSION 数据解决方案
参考自: http://www.cnblogs.com/qulinke/articles/6003049.html https://segmentfault.com/q/101000000578847 ...
- HTML5塔防游戏——《三国塔防》 - Yorhom's Game Box
h3{ font-size:20px; } HTML5塔防游戏--<三国塔防> 游戏介绍: <三国塔防>是一款基于HTML5和Javascript的2D塔防游戏.游戏中除了塔防 ...
随机推荐
- jstat命令(Java Virtual Machine Statistics Monitoring Tool)
1.介绍 Jstat用于监控基于HotSpot的JVM,对其堆的使用情况进行实时的命令行的统计,使用jstat我们可以对指定的JVM做如下监控: - 类的加载及卸载情况 - 查看新生代.老生代及持久代 ...
- python的相对路径导入问题
用python做项目,如果项目大了,或者想更好的管理程序,总是要使用包.包解决了命名冲突的问题. 今天在使用python的相对路径导入的时候,遇到了不少的问题. 包导入情形: src/ __in ...
- HDU --2665
Kth number Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- 自己记录java环境搭建之-maven
简述: 现需要在Eclipse中配置Maven插件,同时安装maven应用,配置Maven环境变量,建立Maven管理的工程,并用Maven导入Gson包, 编写简易Json输出程序 步骤: 1. 首 ...
- iOS设备保持横排方向
//保持横排方向 -(NSUInteger)supportedInterfaceOrientations{ returnUIInterfaceOrientationMaskLandscapeL ...
- 用GPUImage开启相机并且开启滤镜效果
GPUImage提供了GPUImageVideoCamera这么一个类,它的对象能够调用摄像头,并且加上滤镜的效果. //init VideoCamera //这里的两个参数可以设定拍 ...
- 《Numerical Methods》-chaper4-一元非线性方程的解
在许多生产时间问题中,我们根据已知条件往往会列出一个一元非线性方程,一个最典型的例子就是银行存款的问题,由于其利息需要基于前一年的本息和,因此列出来的方程x的指数往往是高次的.还有物理问题当中一系列用 ...
- zoj 3757 Alice and Bob and Cue Sports 月赛A 模拟
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3757 题意:根据所给的台球规则,按照每次的结果计算最终两人的得分 ...
- CF 121E Lucky Array 【树状数组】
这个题目的数据感觉不能更水了.从复杂度上计算,肯定有极限数据可以卡掉暴力方法的么. 总之,暴力的做法就是树状数组了,对于区间更新,就挨个更新就是了.当然,判断是否是Lucky Number的话,可以用 ...
- SVN 资源库报错 E175002
遇到一个问题, svn: E175002: OPTIONS request failed on '/' Connection timed out: connect 试了网上好多办法,都没有,最后公司大 ...