cookie使用安全

Cookie使用安全


目录
1 COOKIE简介 1
1.1 什么是COOKIE 1
1.2 COOKIE可以做什么 1
1.3 COOKIE的限制 1
2 COOKIE常用属性 2
2.1 COOKIE常用属性 2
3 COOKIE安全设置 2
3.1 COOKIE加密 3
3.2 COOKIE域(DOMAIN)与路径(PATH)设置 3
3.3 COOKIE的HTTPONLY和SECURE设置 4


1 Cookie简介
1.1 什么是Cookie
Cookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。
什么是Cookies(“小甜饼”)呢?简单来说,Cookies就是服务器暂存放在你的电脑里的资料(.txt格式的文本文件),好让服务器用来辨认你的计算机。Cookie 是一小段文本信息,伴随着用户请求和页面在 Web 服务器和浏览器之间传递。Cookie 包含每次用户访问站点时 Web 应用程序都可以读取的信息。

1.2 Cookie可以做什么
cookies有什么作用呢?现在上许多网站都用新用户注册这一项,有时注册了一下,等到下次再访问该站点时,会自动识别到你,并且向你问好,是不是觉得 很亲切?当然这种作用只是表面现象,更重要的是,网站可以利用cookies跟踪统计用户访问该网站的习惯,比如什么时间访问,访问了哪些页面,在每个网 页的停留时间等。利用这些信息,一方面是可以为用户提供个性化的服务,
另一方面,也可以作为了解所有用户行为的工具,对于网站经营策略的改进有一定参考价值。例如,你在某家航空公司站点查阅航班时刻表,该网站可能就创建了包含你旅行计划的Cookies,也可能它只记录了你在该站点上曾经访问过的Web 页,在你下次访问时,网站根据你的情况对显示的内容进行调整,将你所感兴趣的内容放在前列。这是高级的Cookie应用。目前Cookies 最广泛的是记录用户登录信息,这样下次访问时可以不需要输入自己的用户名、密码了——当然这种方便也存在用户信息泄密的问题,尤其在多个用户共用一台电脑 时很容易出现这样的问题。

1.3 Cookie的限制
Cookie只是一段文本,所以它只能保存字符串。而且浏览器对它有大小限制以及 它会随着每次请求被发送到服务器,所以应该保证它不要太大,大多数浏览器支持最大为 4kC。由于这限制了 Cookie 的大小,最好用 Cookie 来存储少量数据,或者存储用户 ID 之类的标识符。
浏览器还限制站点可以在用户计算机上存储的 Cookie 的数量。大多数浏览器只允许每个域存储 20 个 Cookie;大多数浏览器还会对它们将接受的来自所有站点的 Cookie 总数作出绝对限制,通常为 300 个。如果试图存储更多 Cookie,则最旧的 Cookie 便会被丢弃。

2 Cookie常用属性
2.1 Cookie常用属性
一个Cookie包含以下信息:
• Cookie名称,Cookie名称必须使用只能用在URL中的字符,一般用字母及数字,不能包含特殊字符,如有特殊字符想要转码。如js操作cookie的时候可以使用escape()对名称转码。
• Cookie值,Cookie值同理Cookie的名称,可以进行转码和加密。
• Expires,过期日期,一个GMT格式的时间,当过了这个日期之后,浏览器就会将这个Cookie删除掉,当不设置这个的时候,Cookie在浏览器关闭后消失。
• Path,一个路径,在这个路径下面的页面才可以访问该Cookie,一般设为“/”,以表示同一个站点的所有页面都可以访问这个Cookie。
• Domain,子域,指定在该子域下才可以访问Cookie,例如要让Cookie在a.test.com下可以访问,但在b.test.com下不能访问,则可将domain设置成a.test.com。如果没有设置cookie的domain值,该属性的默认值就是创建cookie的网页所在的服务器的主机名。注意,不能将一个cookie的域设置成服务器所在的域之外的域。
• Secure,安全性,指定Cookie是否只能通过https协议访问,一般的Cookie使用HTTP协议既可访问,如果设置了Secure(没有值),则只有当使用https协议连接时cookie才可以被页面访问。
• HttpOnly,如果在Cookie中设置了"HttpOnly"属性,那么通过程序(JS脚本、Applet等)将无法读取到Cookie信息。

3 Cookie安全设置
在实际的应用场景中,Cookie被用来做得最多的一件事是保持身份认证的服务端状态。这种保持可能是基于会话(Session)的,也有可能是持 久性的。不管哪一种,身份认证Cookie中包含的服务端票据(Ticket)一旦泄露,那么服务端将很难区分带有此票据的用户请求是来自于真实的用户, 或者是来自恶意的攻击者。在实际案例中,造成Cookie泄露最多的途径,是通过跨站脚本(XSS, Cross Site Script)漏洞。攻击者可以通过一小段JavaScript代码,偷窃到代表用户身份的重要的Cookie标示。由于跨站脚本漏洞是如此的普遍(不要 以为简单的HTML Encode就可以避免被跨站,跨站是一门很深的学问,以至于在业界衍生出一个专用的名词:跨站师),几乎每一个网站都无法避免,所以这种方式是实际攻防中被普遍使用的一种手段。如CSRF(跨站请求伪造)攻击和XSS(跨站脚本)攻击都可能利用Cookie来攻击我们的网站。
了解CSRF和XSS攻击可以访问下面地址
CSRF跨域请求伪造攻击:http://xmong.iteye.com/blog/1564261
XSS跨站攻击:http://xmong.iteye.com/blog/1565910

Cookie往往会成为黑客攻击web应用的切入点,所以我们在使用cookie的时候一定要谨慎小心。下面是使用cookie时候的一些安全考虑。
1. 使用cookie存储信息是明文存储吗,有没有对存储信息加密存储?怎样加密和解密策略?
2. 怎样设置cookie的domain(域)和path(路径),有什么策略?特别是有多个web应用的时候?
3. 怎样操作cookie,是使用js(前端)还是使用java(后台)操作cookie?如果有js操作cookie,这是必须的吗,如果没有,js能访问cookie吗?
4. 在有SSL的应用中,你的Cookie是否可以在HTTP请求和HTTPS请求中通用?

3.1 Cookie加密
加密的方法很多,使用比较复杂的加密算法,安全性比较高些,但占用服务器资源比较大,会减慢整个网站的访问速度。
所以对Cookie加密在考虑三个方面:
1:安全性,2:Cookie容量,3:整个网站的性能

3.2 Cookie域(domain)与路径(path)设置
domain表示的是cookie所在的域,默认为请求的地址,如网址为www.test.com/test/test.jsp,那么domain默认为www.test.com。而跨域访问,如域A为t1.test.com,域B为t2.test.com,那么在域A生产一个令域A和域B都能访问的 cookie,就要将该cookie的domain设置为test.com;如果要在域A生产一个令域A不能访问而域B能访问的cookie就要将该 cookie的domain设置为t2.test.com。
path表示的是cookie所在的目录,默认为/,就是根目录。在同一个服务器上有目录如下:/test/,/test/t1/,/test /t2/,现设一个cookie的path为/test,那么在请求 /test/,/test/t1/,/test /t2/ 时,都能访问cookie,如果将cookie的path设置为/test/t1,在请求/test/,/test/t1/,/test /t2/ 时,只有/test/t1/能访问到cookie。

Cookie在设置域(domain)和路径(path)时,有一个原则:最小授权原则。

浏览器在选择发送哪些本地Cookie到本次请求的服务端时,有一系列的比较和甄别。这些甄别中最重要的部分是Domain和Path的吻合。 Domain形如test.com的Cookie,会被发送给所有test.com在80端口上的子域请求。但是反之则不行,这就是Cookie的域匹配 (domain match)原则。
在一个大型Web站点中,往往有多个应用,生存在不同的子域名或路径下。这些应用之间由于共享同一个域名,所以往往可能会彼此有操作对方应用 Cookie的能力。这种情况下,设计好Cookie的Domain和Path尤为重要。在实际设计工作中,最重要的一个安全原则就是:最小化授权。这意 味着,你需要将自己的Cookie可被访问到的范围降至最低。应用之间传递数据和共享信息的解决方案非常多,而通过Cookie这种用户输入(User input)来共享数据,是最不安全的解决方案之一。

3.3 Cookie的HttpOnly和secure设置
(1)HttpOnly属性
如果在Cookie中设置了"HttpOnly"属性,那么通过程序(JS脚本、Applet等)将无法读取到Cookie信息,这样能有效的防止XSS攻击。
(2)secure属性
当设置为true时,表示创建的 Cookie 会被以安全的形式向服务器传输,也就是只能在 HTTPS 连接中被浏览器传递到服务器端进行会话验证,如果是 HTTP 连接则不会传递该信息,所以不会被盗取到Cookie 的具体内容。
对于以上两个属性,
secure属性是防止信息在传递的过程中被监听捕获后信息泄漏。
HttpOnly属性的目的是防止程序获取cookie后进行攻击。
对于HttpOnly属性Tomcat6,GlassFish2.x只支持的是servlet2.5,而servlet2.5不支持Session Cookie的"HttpOnly"属性。Tomcat7,GlashFish3.0(支持 servlet3.0)默认开启Session Cookie的HttpOnly属性。


******************************

未完待续
参考:
cookie安全漫谈
js操作cookie
ABB机器人与西门子PLC、工业相机联合实现无序抓取的完整调试方案 将此方案导入系统后,逐步执行调试,确保各环节信号正常触发,即可实现高效无序抓取! 阅读详情

相关推荐

abaqus应力值导出并进行后处理(同一节点多个应力值如何处理?)

Abaqus应力导出: ‘Tools’--- Probe values 在Probe Values里面可以选择需要导出的信息,比如‘Nodes’或者‘Elements’ 如果需要导出多个应力值或者其他信息可以选择‘Components’这个选项。 选择‘Selected’只输出一个正应力S33(对应截图中的) 如果是‘All Direct’,则是输出6个正应力S11, S22, S33, S12, S13, S23 ‘All Principals’输出三个正应力 在输出...

themingyi的博客 5万+

提高cookie安全性的几种方法

 一、对保存到cookie里面的敏感信息必须加密   二、设置HttpOnly为true 三、设置Secure为true 四、给Cookie设置有效期 五、给Cookies加个时间戳和IP戳,实际就是让Cookies在同个IP下多少时间内失效 参考资料:   如何提高cookie的安全性    http://www.studyofnet

whaxrl的专栏 4582

对接萤石平台调用播放

萤石api 管理 · 萤石开放平台API文档 httpclient pom <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.2</version> </dependency> package com.ruoyi...

u011799016的博客 1773

安全的cookie和token机制

单独使用cookie或者token都是不够安全的。 单独使用token做验证:不够安全,只要XSS就会被窃取token,黑客可以随意执行任何操作。 单独使用cookie做验证:会遭遇csrf攻击 正确的策略:使用cookie,并配置httpOnly,可以防止被js读取cookie。设置csrftoken,防止csrf攻击。设置正确的CSP白名单策略,防止XSS后读取csrftoken。 这样,哪怕被XSS得手,还得继续执行csrf攻击才能执行特定的操作。 ...

kekefen01的博客 1564

Open-AutoGLM 实战:手把手教你用 AI 操作手机「喂饭教程」

Open-AutoGLM 是一个由智谱AI开源的手机操作智能体框架,由手机端智能助手框架Phone Agent和9B大小的模型AutoGLM-Phone-9B组成,借助ADB自动执行点击、滑动、输入等操作——用户只需用自然语言描述任务,系统便能自动规划并完成整个操作流程。

blues_C的博客 1267

RTK_ROS_导航(4):接入move_base

现在我们要将之前的数据接入到Move_base中,使得机器人能够根据Map上的终点进行导航,并且实现避障效果如下图。

旋风小短腿 1947

提高COOKIE的安全性--相关解决方案

提高COOKIE的安全性--相关解决方案   网络上常见方案是:   给Cookies加个加密算法。 给Cookies加个时间戳和IP戳,实际就是让Cookies在同个IP下多少时间内失效。 最终使用MD5来MAC签名防止篡改……但这样仍然可以看到明文信息,有一定不安全之处。 我的方案是 cookie==3des(“值,时间,IP戳”);   最终得到的COOKIE是这样的:3

attilax的专栏 1万+

【AUTOSAR-DCM】-3.1-将CDD导入CFG并查看$22服务配置变化(UDS诊断DID带一个Data)

案例背景:(共8页精讲) 在《【UDS诊断描述文件CDD】-3.2-编辑CDD给$22服务创建一个带一个Data的DID(dataIdentifier)数据标识符》中,适应使用CANdela Studio在CDD中创建一个带一个Data的DID(dataIdentifier)数据标识符,见图0-1。现在我们将该CDD文件导入到CFG(DaVinci Configurator),看看配置会发生哪些变化。 图0-1 目录 1 将诊断描述文件CDD导入CFG(DaVinci Configurator.

「汽车电子助手」的博客 1633

提高cookie的安全性的几个建议

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33700350的博客 995

【入坑存内计算一键指南】存内计算运算原理:算法优化、存储介质探究

本文探讨了存内计算及其面向的架构优化,尤其侧重于图算法优化和存内计算存储介质。文章介绍了存内计算的概念和意义,着重强调了存内计算解决了内存墙问题,提高了计算效率。针对图算法的优化,提出了基于位运算的创新方法,重塑了单源最短路径算法,并介绍了基于局部重叠度的链路预测算法优化设计。接着,文章详细讨论了存内计算存储介质,特别是非易失性存储器,比较了不同类型存储器的性能,并重点介绍了基于ReRAM的存内计算技术,包括其物理模型和交叉阵列结构。

一键难忘的博客 7067

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Cookie原理及应用场景

Cookie概念、流程、应用场景及具体扩展开发

MrZhang的博客 3607

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

安全地使用 Cookie

安全地使用 Cookie Cookie 是一种有用的让用户特定的信息保持可用的方法。但是,由于 Cookie 会被发送到浏览器所在的计算机,因此它们容易被假冒或用于其他恶意用途。请遵循这些指导: 不要将任何关键信息存储在 Cookie 中。例如,不要将用户的密码存储在 Cookie 中,即使是暂时存储也不要这样做。通常,不要将任何信息保存在 Cookie 中,因为一旦它被假冒,就会

每天进步一点点 620

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Cookie实现原理、安全处理和使用案例

cookie实现原理、安全处理和使用案例

1337

php cookie安全,关于php:使用登录Cookie的相对安全的方法是什么?

我想知道Cookie登录的最安全方式是什么?如果您仅将通行证(用salt加密)和用户名存储在cookie中并针对用户表进行验证,潜在的攻击者可以窃取Cookie并登录。人们通常不会在"最后一次上网"时查看该信息。那么"记住我的cookie"是否有更好的方法?IP不是一个很好的选择,是吗? (某些机器一直在更改IP)。请告诉我们有关您的应用程序将使用此功能的信息。 假冒/身份盗窃的潜在影响是什么?大...

weixin_29378975的博客 311

cookie登录_使用UserAgent和Cookie安全登录Facebook账号[安全买号必读]

买号买那种带cookie的耐用号,登录可以直接使用的安全账号,已经过了新手期养号过程。如果账号有提供User-Agent信息,先更改浏览器的User-Agent,以chrome浏览器为例。1.点击F12,进入开发者模式,点击第二个图标。2.点击设备名称,在下拉菜单中点击Edit···。3.点击Add custom device,添加新的User-Agent。4.填写完成后,点击Add。5...

weixin_39970369的博客 2676

cookie使用说明和安全性问题

1.测试代码 创建两个Severlet使用cookie就行存储数据 MyServlet1: public class MyServlet1 extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //设置请求编码格式 req.setCh...

赵广陆 981

Cookie使用和安全

Cookie简要介绍,安全使用cookie注意点

Adong的程序人生 815

js-cookie的使用以及存储token安全的注意要点

2、使用CSRF Token:在每个请求中添加一个随机生成的CSRF Token,然后在服务器端验证这个Token。2、启用Content Security Policy,简称CSP内容安全策略集配置,限制浏览器只加载和执行来自特定源的脚本,从而防止XSS攻击;3、使用Referer Header:在服务器端检查Referer Header,如果请求不是来自同一源,那么请求将被拒绝。3、对用户输入进行验证和转义:对所有用户输入进行验证,并对特殊字符进行转义,以防止恶意脚本被执行。

xyphf的博客 2443

【Cookie】如何安全的使用cookie

在用户使用某个cookie的登录某个网站时,通过饼干可以拿到安全的访问权限,如果饼干被盗,那么任何人都可以访问网站。 我们需要关注的是如何保证客户端提交数据的保密性和服务器获取信息的随机性,即可变性。 首先,客户端使用安全的方式保存用户信息,例如chrome不允许用户通过浏览器获取Cookie,是一个办法。 另外,客户端提交时,使用足够复杂的方式处理,以避免在另一台主机可以模仿当前主机的提交...

jy0921 1019

使用HttpOnly提升Cookie安全性

在介绍HttpOnly之前,我想跟大家聊聊Cookie及XSS。 随着B/S的普及,我们平时上网都是依赖于http协议完成,而Http是无状态的,即同一个会话的连续两个请求互相不了解,他们由最新实例化的环境进行解析,除了应用本身可能已经存储在全局对象中的所有信息外,该环境不保存与会话有关的任何信息,http是不会为了下一次连接而维护这次连接所传输的信息的。所以为了在每次会话之间传递信息,

zzzmmmkkk的专栏 9万+

在处理用户登录状态时,如何平衡Cookie和Session的使用以提高安全性?

在处理用户登录状态时,平衡Cookie和Session的使用以提高安全性是一个重要的考虑因素。综上所述,平衡Cookie和Session的使用并提高安全性的关键是采用多层次的安全措施,并确保在整个应用程序中实施最佳实践。

长风破浪会有时的博客 397

使用AuthToken架构保护用户帐号验证Cookie的安全性

<br />在项目或者网站开发中,我们很多人很多时候喜欢使用微软的FormsAuthentication类的GetAuthCookie函数生成需要在访客客户端放置的帐号校验Cookie,这个本身没问题,但是很多人会被GetAuthCookie的userName参数误导,以为传递UserID或者UserName就很安全了.而实际上,Cookie本身并不安全,如果完整复制了校验Cookie,在Cookie的允许时间范围内,黑客完全可以使用该Cookie代表的帐号做各种危害网站和应用的事情,即使设定了Cookie

何辉 1898

安全科普:使用Cookie会导致哪些安全问题?

0x01 Cookie的前世今身 Cookie指某些网站为了辨别用户身份而储存在用户本地客户端上的数据。 因为HTTP协议是不保存用户状态的,这使得用户在交互式的web应用中体验非常差。 在一个网上购物的场景中,用户向购物车添加了一些商品,最后结账时,由于HTTP的无状态性,不通过额外参数,服务器并不知道哪位用户购买了哪些商品。在这种场景下,服务端可通过设置或读取Cookie中包含的信息,维护用户的会话状态。 0x02 由Cookie延伸出的漏洞 在这篇文章中,我们将列出各种攻击.

chiansec_的博客 1万+

vue中如何使用js-base64、和js-cookie安全的存储信息

在Vue中使用js-base64和js-cookie来安全存储登录用户信息,你可以按照以下步骤进行操作:首先,安装js-base64和js-cookie库。通过以上步骤,你可以在Vue中安全地使用js-base64和js-cookie来存储和获取登录用户信息。记得在适当的时候清除或更新用户信息,以保持数据的准确性和安全性。

dzqxwzoe的博客 1654
上一篇: XSS跨站攻击
下一篇: JDK7新特性
xmong
博客等级 码龄19年 33粉丝 85原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值