`
yutuer
  • 浏览: 9106 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

浅谈HTTP中的Session与Cookie

阅读更多
session是保存在服务器端没错,但是要知道哪个用户是使用什么session,通过http协议这么知道的呢?

举个例子,服务器是resin,sessionid格式是使用cookie,session失效期是30分钟,这些可以通过服务器配置文件resin.conf设置:

<session-config>
        <session-max>4096</session-max>
        <session-timeout>30</session-timeout>
        <enable-cookies>true</enable-cookies>
        <cookie-domain>yourdomain</cookie-domain>
        <enable-url-rewriting>true</enable-url-rewriting>
</session-config>

进去一个使用session的jsp页面,检查response头,发现:
Set-Cookie: JSESSIONID=b5a86TcEnktd; domain=yourdomain; path=/
第一次访问的时候jsp发现这个请求没带有JSESSIONID,所以生产一个,并且set进去浏览器的cookie里面

然后第二次访问这个页面(不关闭浏览器)浏览器发现有这个cookie,对应这个domain和path,ok,
请求头包括这一行:
Cookie:  JSESSIONID=b5a86TcEnktd
服务器通过这个JSESSIONID到session池里面拿session,如果拿到,证明是有效的session(因为命名随机,所以很难撞),如果没有这个session,就证明sessionid无效,生成一个新的session,然后想上面一样set进cookie

此时关闭浏览器,再打开,访问同样的页面,由于浏览器发现刚才那个cookie已经过期(存活期是浏览器期限),所以请求头并没有加上Cookie:  JSESSIONID=b5a86TcEnktd这一行,服务器解释这个请求,找不到JSESSIONID,自然帮他生产一个新的,然后又通过response设置成Set-Cookie。
Set-Cookie: JSESSIONID=adqOWayWfard; domain=yourdomain; path=/

好了,这个cookie的id是adqOWayWfard,原来的那个是b5a86TcEnktd,服务器并不知道b5a86TcEnktd已经没有人使用了,所以它还是会存活到30分钟后才消失,但是此时如果有请求是使用了b5a86TcEnktd的JSESSIONID,服务器会认为是有效请求,此时的session就已经被别人盗用了~当然这种可能性很低。

但是楼主说的情况,是外部提交的问题,用session是解决不了的!
只要你访问过一次需要提交的页面,生成可提交的session,记录sessionid,然后在30分钟内,你可以用这个session提交,你可以用程序set入去http请求里面,也可以用url代session方式:

http://yourdomain/test.jsp;jsessionid=b5a86TcEnktd

服务器一样可以拿到session。
当然你可以在session里面设置一个值,比如时间,没session和间隔太短的都不许提交,这样可能有效一点,呵呵,但是httpservletreaeust.getsession(false)这个东西是没有用di,只要有sessionid就能让他get出东西出来,哈哈。

记住,http协议能让人提交,就不能防止别人用同样的http协议提交,因为http协议是没有验证和数据持续的东西的,所有东西都是通过request header、body来传送,只要我能写程序,分析你的http响应,然后做到和平常人的提交一模一样,你是没有办法禁止的,就算使用了图片验证码,我也可以取得图片来分析,得出验证码提交,这就是为什么现在图片验证码要很多干扰线、gif动态,为的就是防止ocr分析,只是数字的ocr识别率是很高的,也很容易做(用java,做过一个),所以我们要干扰干扰干扰~~~~

分享到:
评论

相关推荐

    在PHP中浅谈Cookie与Session.pdf

    在PHP中浅谈Cookie与Session.pdf

    浅谈COOKIE和SESSION区别

    在PHP面试中经常碰到请阐述session与cookie的区别与联系,以及如何修改两者的有效时间。具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。

    浅谈cookie 和session 的区别

    下面小编就为大家带来一篇浅谈cookie 和session 的区别。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    浅谈cookie和session(小结)

    主要介绍了浅谈cookie和session(小结),cookie和session在java web开发中扮演了十分重要的作用,本篇文章对其中的重要知识点做一些探究和总结

    浅谈Tomcat Session管理分析

    在上文Nginx+Tomcat关于Session的管理中简单介绍了如何使用redis来集中管理session,本文首先将介绍默认的管理器是如何管理Session的生命周期的,然后在此基础上对Redis集中式管理Session进行分析。 Tomcat Manager...

    浅谈关于axios和session的一些事

    最近在工作中遇到一个问题,后端写好,前端写好,postman测试做好,一切都没有问题,但是实际用axios来实现登陆功能的时候问题就来了…. 什么情况?登陆根本用不了啊!每次都提示我没有登陆! 代码没问题啊,...

    浅谈PHP Cookie处理函数

    (o゜▽゜)o☆[BINGO!] ok,我们先看看cookie是什么东东? cookie是服务器留在客户端的用于...cookie在web中是很重要的角色,早在网景浏览器的时候就产生了cookie。cookie经常被用于用户验证系统。 1.创建cookie 函数s

    浅谈php(codeigniter)安全性注意事项

    session一定要用httponly的否则可能被xxs攻击,利用js获取cookie的session_id。 要用框架的ci_session,更长的位数,httponly,这些默认都配好了。 不要用原生的phpsession,而要用ci_session。ci_session位数更长。...

    浅谈asp.net Forms身份验证详解

    当我将用户信息存在在Session中时,常常会遇到Session丢失导致用户无法正常访问被授权的资源,保持用户登录状态时的安全性问题,无休其实,在asp.net中,我们有更好的解决方案,那就是通过Forms身份验证,从而对用户...

    asp.net知识库

    也谈 ASP.NET 1.1 中 QueryString 的安全获取写法 ASP.NET运行模式:PageHandlerFactory 利用搜索引擎引用来高亮页面关键字 网站首页的自动语言切换 应用系统的多语言支持 (一) 应用系统的多语言支持 (二) 自动...

    ASP.NET3.5从入门到精通

    13.1.4 Session 状态对象 13.1.5 Server 服务对象 第一篇窗口与界面编程 17 13.1.6 Cookie 状态对象 13.1.7 Cache 缓存对象 13.1.8 Global.asax 配置 13.2 ASP.NET 应用程序配置 13.2.1 ASP.NET 应用程序配置 13.2.2...

    ASP.NET 3.5 开发大全word课件

    这是整部学习资料 由于太大第一章免费供应给大家 在我的上传资源中 如果觉得还不过希望大家给个好评 当然具体本书的作者就不深究了把! 第1章 认识ASP.NET 3.5 1.1 什么是ASP.NET 1.1.1 .NET历史与展望 1.1.2 ASP...

    ASP.NET 3.5 开发大全11-15

    13.1.4 Session状态对象 13.1.5 Server服务对象 13.1.6 Cookie状态对象 13.1.7 Cache缓存对象 13.1.8 Global.asax配置 13.2 ASP.NET应用程序配置 13.2.1 ASP.NET应用程序配置 13.2.2 Web.config配置文件 13.2.3 ASP...

    ASP.NET 3.5 开发大全

    13.1.4 Session状态对象 13.1.5 Server服务对象 13.1.6 Cookie状态对象 13.1.7 Cache缓存对象 13.1.8 Global.asax配置 13.2 ASP.NET应用程序配置 13.2.1 ASP.NET应用程序配置 13.2.2 Web.config配置文件 13.2.3 ASP...

    ASP.NET 3.5 开发大全1-5

    13.1.4 Session状态对象 13.1.5 Server服务对象 13.1.6 Cookie状态对象 13.1.7 Cache缓存对象 13.1.8 Global.asax配置 13.2 ASP.NET应用程序配置 13.2.1 ASP.NET应用程序配置 13.2.2 Web.config配置文件 13.2.3 ASP...

    ASPNET35开发大全第一章

    13.1.4 Session状态对象 13.1.5 Server服务对象 13.1.6 Cookie状态对象 13.1.7 Cache缓存对象 13.1.8 Global.asax配置 13.2 ASP.NET应用程序配置 13.2.1 ASP.NET应用程序配置 13.2.2 Web.config配置文件 13.2.3 ASP...

Global site tag (gtag.js) - Google Analytics