《web应用安全》 cookie与会话管理

cook与会话管理

会话管理

记住用户登陆后的认证状态是一种常见的需求,使用http认证能使浏览器记住id和密码,但是不使用http认证时,记忆认证状态的任务就交给了服务器,而像这种记忆应用程序状态的功能就叫做会话管理。

cookie

格式:cookie:phpsessid=会话id 

cookie相当于服务器下达给浏览器的命令,让其记住发送给它的“名称=变量”这种格式的值。
1,最初显示页面时,返回的响应信息中含有cookie响应头信息,web服务器向浏览器下达了记住此cookie值的指示。
2.浏览器记住了cookie值,从此在向相同网站发送请求时,就会发送此cookie值

简单的来讲就是,你登陆一个网站输入个密码,服务器给你返回个cookie,每次在这个网站上进行操作的时候,就不用每次都输入密码,因为你每次的请求,浏览器会自动发送cookie和服务器进行认证。

会话id应满足的需求

不能被第三方推测
不能被第三方劫持(预防,认证后改变会话id)
不能被第三方泄露。

会话id泄露的原因
  • 发行cookie时的属性指定有问题
  • 会话id在网络上被监听
  • 跨站脚本漏洞等应用中的安全隐患被泄露
  • 会话id保存在url中的情况下,会通过referer消息头泄露

通常保护会话id不被监听,采用ssl加密

cookie的属性
属性含义
Domaincookie发送对象服务器的域名
pathcookie发送对象url的路径
Expirescookie的有效期限,未指定则表示至浏览器关闭为止
Secure仅在ssl加密的情况下发送cookie
HttpOnly指定了此属性的cookie不能被javaScript访问

涉及安全的3个重要属性为Domain Secure HttpOnly

cookie的Domain属性

在需要向多个服务器发送cookie时,就用到了Domain属性
假设 浏览器要给三个服务器发送
a.example.jp
b.example.jp
a.example.com
设置的cookie为:set-cookie:x=123;Domain=example.jp
指定domain为example.jp,因为没有指定example.com,后者就不会被发送.
如果在cookie中指定不同的域名,就可能发生会话固定攻击,所以cookie是不能指定不通域名的。
未指定domian属性时,cookie只会发送给生成它的服务器,发送范围小,也更安全。而设置domain属性时,稍有疏忽,就会产生安全隐患。
原则上不设置ciikie的domain属性

cookie的secure属性
设置了secure属性,的cookie尽在ssl传输的情况下,能够发送给服务器
未设置的 无关是否为ssl传输,都会发送
cookie的HttpOnly属性
给cookie添加httpOnly属性,在php.ini中添加如下设置
session.cookie_httponly = on 

恶意使用javascript进行跨站脚本攻击,从而取得cookie信息,窃取会话id
,设置httpOnly属性可以加大其攻击难度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值