打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
cookie安全
cookie的domian,path,expires,这些在cookie操作中都会经常用到
但是对于客户端浏览器来说这些都是可见的,通过document.cookie可以直接在脚本里输出,这里很容易被注入一些js脚本,获取到本地的cookie,发送到其他地方去,泄露个人隐私,也许大家会认为session安全,通常会听到某某某大侠说,session是保存在服务端的,比cookie安全,可是某某某大侠真的清楚http协议吗?http协议规范定义http是无状态协议, 那么为什么能在服务端保存状态, 建议大家看一下我写的session原理。
相信用过tomcat的人都会知道有个jsessionid这个东东,这个便是服务端为了保持客户端的状态,通常在客户端cookie里写入的jsessionid这个参数, 这个cookie的有效期是进程, 也就是关闭浏览器,即失效, 如果在客户端不支持cookie的情况下, 服务端可以通过url rewrite技术重写客户端请求url, 也就是在客户端请求url的后便加入jsessionid=xxxxxxx这样的参数,但归根结底还是在客户端保存了jsessionid这样的信息,cookie与url的参数都可以被本地植入的脚本取到, 打开firefox的firebug,,在控制台输入document.cookie;看一下,所有的cookie信息全在里边了, 在IE中可以在地址栏里直接输入javascript:alert(document.cookie);.也可以看到cookie中的信息,所以这样保存的cookie一旦被黑客注入的脚本获得到,就可以发送jsessionid这样的东东到其他地方去。
很多人使用session验证用户登录状态,包括spring security这样的安全框架,默认都是采用session来保存用户状态信息,那么一旦某个用户登录了,但是jsessionid通过黑客的脚本,就可以被发送到其他地方,黑客可以直接吧jsessionid参数贴在请求url之后,那么一切的验证就从容而破。
针对这样的问题,可以采用http only的cookie, 使得本地脚本无法获得该cookie, 只有通过http协议的程序才能使用这个cookie,加上cookie限制domian,达到防止恶意脚本泄露cookie的目的,基于原理来看http only cookie 是很简单的:
Http_header代码
Set-Cookie  ASP.NET_SessionId=h1tgc555io1lav2dfi1pqdiq; path=/; HttpOnly
比起一般的cookie,只是在后端加入了HttpOnly的字符串,这项规范早在Internet Explorer 6 SP1就引入了(这是我第一次对微软有好感^!^),在现在的主流浏览器中,firefox,chrome都有支持,如果是这样的cookie,则在本地使用document.cookie是得不到的,浏览器已经对dom隐藏该cookie, 但是现在sun的api还未对改属性做支持,如果要在java中用到,只能手动去设置相应的cookie头,加上HttpOnly, 希望sun, 不应该是oracle了, 杯具, 尽快支持吧。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
session功能实现原理
JSESSION,Session,Cookie浅谈
jsp/servlet 深入解析session本质
url中的jsessionid解释 - 梧桐的日志 - 网易博客
android客户端与服务器端交互 如何保持session
理清 Tomcat中Session和Cookie
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服