当前位置:  开发笔记 > 运维 > 正文

Cookie和会话之间的差异?

如何解决《Cookie和会话之间的差异?》经验,为你挑选了2个好方法。

我正在进行Web开发培训,并且正在学习JSPServlets.我有一些知识HttpSession- 我在一些示例项目中使用过它.

在浏览器中,我看到了"删除cookie"的选项.如果我删除了cookie,它HttpSession也会删除它.

Cookie和会话是一样的吗?它们之间有什么区别?



1> Chris Cudmor..:

Cookie只是一个在客户端和服务器之间来回发送的短文本字符串.您可以存储name=bob; password=asdfas在cookie中并来回发送以识别服务器端的客户端.您可以将此视为与没有短期记忆的银行出纳员进行交换,并且需要您为每笔交易确定自己的身份.当然使用cookie来存储这种信息是非常不安全的.饼干的大小也有限.

现在,当银行出纳员知道他/她的记忆问题时,他/她可以在一张纸上写下您的信息并为您分配一个短的身份证号码.然后,您可以只说"我是客户12",而不是为每笔交易提供您的帐号和驾驶执照.

将其转换为Web服务器:服务器将相关信息存储在会话对象中,并创建会话ID,并将其发送回cookie中的客户端.当客户端发回cookie时,服务器可以使用ID简单地查找会话对象.因此,如果删除cookie,会话将丢失.

另一种替代方法是服务器使用URL重写来交换会话ID.

假设你有一个链接 - www.myserver.com/myApp.jsp 你可以浏览页面并重写每个URL,www.myserver.com/myApp.jsp?sessionID=asdf甚至www.myserver.com/asdf/myApp.jsp以这种方式交换标识符.此技术由Web应用程序容器处理,通常通过将配置设置为使用无Cookie会话来打开.


这是一个很好的解释,以一个伟大的现实世界类比为基础.这个答案应该得到更多的支持.对于最有可能提出这样问题的新手来说非常容易接近.
@nha服务器创建会话并将其传递给带有cookie的响应.您希望在创建会话时根据应用程序逻辑创建会话.客户端也可以创建cookie,但在识别会话的场景中可能没有多大用处,因为服务器可能不知道该值在会话中代表什么.
@ I19可能,他们可以冒充你.这种情况发生在在线赌博场景中 - 嗅探酒店wifi,窃取会话ID并访问该帐户.确保会话安全是另一回事.
如果我是用户而其他人知道我的会话ID,会发生什么?
那么谁先创建cookie呢?服务器或客户端?或者这取决于应用程序?(我说服务器,否则它会带来安全威胁,但我认为值得一提?)

2> Eran Galperi..:

会话是包含用户信息的服务器端文件,而Cookie是包含用户信息的客户端文件.会话具有唯一标识符,可将其映射到特定用户.此标识符可以在URL中传递或保存到会话cookie中.

大多数现代网站使用第二种方法,将标识符保存在Cookie中,而不是将其传递到URL中(这会带来安全风险).您可能在不知情的情况下使用此方法,并且通过删除Cookie,您可以在删除Cookie中包含的唯一会话标识符时有效地删除其匹配的会话.


"_在URL中传递它(这会带来安全风险)._"实际上这两种方法都存在安全风险(不同的风险).如果正确完成,URL_中的_Secret-ID可以是安全的,并且如果用户知道URL是秘密的,并且无法在公共论坛中发布.
@whitelettersandblankspaces会话cookie存储在客户端上(其值包含唯一的会话标识符,该标识符与将浏览器会话映射到服务器上的用户会话的每个请求一起发送).
推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有