document cookie(假设我拿到了别的用户的淘宝网站的cookie,我放到自己的http请求里,我就可以冒充这个用户吗)
本文目录
- 假设我拿到了别的用户的淘宝网站的cookie,我放到自己的http请求里,我就可以冒充这个用户吗
- cookie到底属于dom还是bom呢
- 哪个浏览器网页的cookie能获取
- document.cookie是字符串么
- document.cookie
- document.cookie 怎么处理
- cookie是什么cookie的设置/修改/获取/删除
- document.cookie的问题,大家帮忙看看
- javascript中document.cookie与Set-Cookie的区别
假设我拿到了别的用户的淘宝网站的cookie,我放到自己的http请求里,我就可以冒充这个用户吗
大家都知道,Cookie是会话保持技术方案的一种,从理论上说拿到了Cookie是可以冒充用户的。下面具体分析下:
Cookie的机制原理
我们知道HTTP协议本身就是无状态的,服务器端默认情况下是无法分辨用户的,这样显然是不合理的,所以我们需要给每个访客加上一个“标识口令”。当分配了标识口令给客户端后,客户端浏览器后续发起的请求都会把这个“标识口令”附带在请求头参数里,这样服务器端就能分辨哪些请求是同一个用户了。
这个“标识口令”由服务器端生成,放置在客户端浏览器Cookie中,而服务器端对应会有一个Session,这个Session的唯一标识(SessionID)也是存储在Cookie中。
篡改Cookie可以冒用请求
上面讲到了,服务器端的SessionID是存储在客户端Cookie中的,这样一来其它用户一旦拿到Cookie中的SessionID后,是可以冒充原始用户发起请求的。
这看上去是不合理的!
但是,Cookie和Session的机制如此。我们说Cookie禁用后Session可能不能正常使用,但是我们可以将SessionID以GET方式传递给服务器端,所以SessionID如果明文传输就存在安全隐患。
拿到了淘宝的Cookie是无法冒充用户的
正因为Cookie是存储在客户端且不安全的,所以我们将用户数据存储在Cookie中时都会对数据进行加密。比如会验证用户的IP、终端特征标识等。即使其他用户伪造了Cookie依旧是无法验证通过的。
cookie到底属于dom还是bom呢
首先可以明确的告诉你,Cookie归属于BOM,而不是DOM。我们在接触JavaScript时会了解两大对象模型:DOM文档对象模型、BOM浏览器对象模型,通过JS操作这两大对象模型才使得JS有了交互能力,但不少人分不清这两者区别及定位。
DOM文档对象模型
网页上的文档对象以“树形”结构组织在一起,这就是文档对象模型,DOM对节点包含:元素节点、文本节点、属性节点。
DOM提供了处理网页内容的方法和接口,我们通过JS操作元素其实就是操作DOM。
BOM浏览器对象模型
BOM提供了与浏览器进行交互的方法和接口,比如操作窗口大小、地址栏、屏幕等。
DOM与BOM的关系异同
1、DOM是W3C标准,而BOM是由不同浏览器厂家自主实现的(所以会存在一些差异);BOM在DOM之前出现的;
2、DOM可以“理解”为是BOM的一部分。
综上,Cookie的操作其实是属于BOM,因为Cookie是存储在浏览器中的,另外document.cookie的另一种写法是window.document.cookie。
以上就是我的观点,对于这个问题大家是怎么看待的呢?欢迎在下方评论区交流 ~ 我是科技领域创作者,十年互联网从业经验,欢迎关注我了解更多科技知识!哪个浏览器网页的cookie能获取
我们知道,网页会话技术是依懒于Cookie和Session的,Session存储在服务器端,而Cookie是存储在客户端(也就是浏览器端)的。既然Cookie是存储在客户端的,那我们如何查看Cookie呢?
Cookie在客户端的存储形式
Cookie的确是存储在客户端的,但却少有人知道Cookie的存储形式,可能有人说Cookie是以文件形式存储在客户端的,那是不是意味着客户端的Cookie只有这一种形式呢?其实不是的!
1、硬盘Cookie
硬盘Cookie指的是以文件形式存储在客户端的Cookie。如果某个Cookie设置了有效期(Expires),且此Cookie未过期时就会以文件形式存储在客户端的硬盘中。
2、内存Cookie
内存Cookie是指没有指定过期时间的Cookie,内存Cookie是存储在客户端电脑内存中的,当浏览器关闭后就会失效。
如何查看Cookie?
对于硬盘Cookie我们可以找到Cookie文件来查看,但对于内存型Cookie就没法通过文件形式来查看了,那怎么办呢?其实,不管是硬盘Cookie还是内存Cookie,都可以通过浏览器自带的调试工具来便捷的查看Cookie键值对。下面简单说下不同浏览器下用调试工具查看Cookie的方法:
1、IE浏览器
右击网页空白处 》检查元素(或者直接按F12) 》切换到“网络”选项卡 》点击要查看Cookie的站点资源URL,然后在右侧就能看到此URL请求对应的Cookie信息了。
2、谷歌浏览器(Chrome)
右击网页空白处 》检查 》切换到“Application”选项卡 》在左侧点击Cookies,选择要查看的站点后就能在右侧看到Cookie的键值对。
以上就是我的观点,对于这个问题大家是怎么看待的呢?欢迎在下方评论区交流 ~ 我是科技领域创作者,十年互联网从业经验,欢迎关注我了解更多科技知识!document.cookie是字符串么
每个cookie都是一个名/值对,可以把下面这样一个字符串赋值给document.cookie:document.cookie="userId=828";如果要一次存储多个名/值对,可以使用分号加空格(; )隔开,例如:document.cookie="userId=828; userName=hulk";在cookie的名或值中不能使用分号(;)、逗号(,)、等号(=)以及空格。在cookie的名中做到这点很容易,但要保存的值是不确定的。如何来存储这些值呢?方法是用escape()函数进行编码,它能将一些特殊符号使用十六进制表示,例如空格将会编码为“20%”,从而可以存储于cookie值中,而且使用此种方案还可以避免中文乱码的出现。例如:document.cookie="str="+escape("I love ajax");相当于: document.cookie="str=I%20love%20ajax";当使用escape()编码后,在取出值以后需要使用unescape()进行解码才能得到原来的cookie值,这在前面已经介绍过。 尽管document.cookie看上去就像一个属性,可以赋不同的值。但它和一般的属性不一样,改变它的赋值并不意味着丢失原来的值,例如连续执行下面两条语句:document.cookie="userId=828";document.cookie="userName=hulk";这时浏览器将维护两个cookie,分别是userId和userName,因此给document.cookie赋值更像执行类似这样的语句:document.addCookie("userId=828");document.addCookie("userName=hulk");事实上,浏览器就是按照这样的方式来设置cookie的,如果要改变一个cookie的值,只需重新赋值,例如:document.cookie="userId=929";这样就将名为userId的cookie值设置为了929。
document.cookie
简单的给你解释一下document 为一个超类 .cookie 为他的方法 (函数)Cookie是一种能够让网站服务器把少量数据储存到客户端的硬盘或内存,或是从客户端的硬盘读取数据的一种技术。Cookies是当你浏览某网站时,由Web服务器置于你硬盘上的一个非常小的文本文件,它可以记录你的用户ID、密码、浏览过的网页、停留的时间等信息。他主要是存储用的。你说你要实现网页计数器,其实可以不用到cookie也可以的。譬如说写成 if(条件成立)i++;时间不多,手上还没现成的。只能跟你说下简单的思路。在把这个i通过传到界面就行了,但这个方法控制不了作弊适用于新手。如果按F5狂刷新,那计数器就狂长了。呵呵你既然要做网站的计数统计那就一定要存住想存住就一定要入库啊?虽然跟cookie的流程差不多,要是没做过,效率可是比cookie快多了。计数器的方法很多的。仔细想一想,现在你的想法有了,实践一下就行了。
document.cookie 怎么处理
设置cookie 每个cookie都是一个名/值对,可以把下面这样一个字符串赋值给document.cookie: document.cookie="userId=828"; 如果要一次存储多个名/值对,可以使用分号加空格(; )隔开,例如:document.cookie="userId=828; userName=hulk".
cookie是什么cookie的设置/修改/获取/删除
COOKIE长度限制总结
cookie在柯林斯词典上的释义:甜饼,网络跟踪器(记录上网用户信息的技术) 。 之前一直把cookie和cache傻傻分不清,现在 可以确定cookie表示网络跟踪器 ,cache请听下回分解。
cookie能在客户端保存用户信息(区别于session在服务端保存用户信息)
通过document.cookie.length可以发现cookie其实就是一个由key和value加分号组成的字符串,这个例子中的字符串长度为415。 typeof document.cookie返回true也证明了这点。
预备知识: undefined和null在cookie中的妙用
setCookie中:escape()函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。它将任何形式的value,转换成字符串,此函数存在于window对象下。
Cookie默认有效期是多久? 是指不专门设置有效期时的有效期,不设置有效期时Cookie只在当前会话内有效,关闭浏览器后即被丢弃。
setCookie函数中有效期的实现依据是什么?
在向document.cookie写入值的时候,末尾添加字符串为 ;expires=GMT/UTC_Format_Time ,expires使用GMT或UTC格式的时间 ,即可设置有效期,有效期格式必须为GMT或者UTC格式。
cookie常用字段设置语法:
1 直接修改firstName字段
2 使用 setCookie(cookie_name,value,day) 函数,也可以修改,使用相同的字段名,后面的可以覆盖前面的值。
下面是一个实际的例子
cookie获取正则解析: "(^| )" + name + "=(*)匹配除分号以外的任意字符,也就是cookie键值对的值。最后(;|$)匹配分号或整个cookie的结尾,也就是cooke键值对的结尾。
设置要删除的cookie的expires为过去的时间即可。
Cookie主要用在以下三个方面:
会话状态管理(如用户登录状态、购物车、游戏分数和其它需要记录的信息) 个性化设置(如用户自定义设置、主题等) 浏览器行为跟踪(如跟踪分析用户行为) 保持登录状态(拒绝cookie可能无法正常登录,不过也有其它解决方案)
加深理解cookie: js与cookie的domain和path之间的关系 javascript操作cookie w3school中JavaScript Cookies
document.cookie的问题,大家帮忙看看
这是escape编码问题。(escape 方法返回一个包含了 charstring 内容的字符串值( Unicode 格式)。所有空格、标点、重音符号以及其他非 ASCII 字符都用 %xx 编码代替,其中 xx 等于表示该字符的十六进制数。例如,空格返回的是 "%20" 。)在调用documents.cookie的时候需要解码unescape。你看看下面的代码 应该就了解了:《script language="jscript"》 function SetCookie(sName, sValue) { date = new Date(); var str=sName+"="+escape(sValue)+(";expires="+date.toGMTString()); str=str.replace("2007","2008"); alert(str); document.cookie=str; alert(document.cookie); alert(unescape(document.cookie));//alert(document.cookie); } 《/script》 《input type="button" value="添加cookie" onClick="SetCookie(’bill’,’honey’)"》哦,我明白你的意思了,不显示是因为所有Cookie的expires(过期时间)都不能正常显示。这是因为浏览器返回给服务器的Cookie是不包含过期时间的,而服务器返回给浏览器的Cookie是包含过期时间的。过期时间只对客户端浏览器有意义,对服务器来说没有什么意义。
javascript中document.cookie与Set-Cookie的区别
document.cookie--A cookie is a small piece of information stored by the web browser in the cookies.txt file. Use string methods such as substring, charAt, indexOf, and lastIndexOf to determine the value stored in the cookie. See the JavaScript Guide for a complete specification of the cookie.Set-Cookie--function setCookie (sName, vValue){ var argv = setCookie.arguments, argc = setCookie.arguments.length; var sExpDate = (argc 》 2) ? "; expires="+argv.toGMTString() : ""; var sPath = (argc 》 3) ? "; path="+argv : ""; var sDomain = (argc 》 4) ? "; domain="+argv : ""; var sSecure = (argc 》 5) && argv ? "; secure" : ""; document.cookie = sName + "=" + escape(vValue,0) + sExpDate + sPath + sDomain + sSecure + ";";}上面的例子你看懂了么????一个是系统的方法,另一个是用户自定义的方法。。。。
本文相关文章:
xen vps(为什么说XEN架构的服务器比较难超售这么说要在淘宝买vps买XEN是比较理想的选择吗我主要用linux服务器)
2024年7月23日 06:57
淘宝如何修改价格而不会降低权重?淘宝发布宝贝的型号怎么设置的
2024年7月7日 13:16
chrome 18(chrome升级到18到打开淘宝网黑屏.是怎么回事)
2024年7月3日 08:02
chinanet扫号器(chinanet扫号器我想知道是什么东西淘宝上卖的上网账号那么便宜,是扫号扫来的么)
2024年7月2日 20:43
店提升每天都可以看到更新淘宝资讯文章吗?我在淘宝门户的资讯里发帖 正发着说你已被禁言请与
2024年6月26日 13:10
淘宝购物时,鼠标放到淘宝主图上会出自动出现现相似宝贝,这个是什么怎么弄的呢?淘宝找同款功能取消了吗
2024年6月26日 03:42
求介绍一个比较好的淘宝自动发货软件?淘宝自动发货工具醉梦助手如何
2024年6月25日 23:34
更多文章:
toolbar menu(android 怎么更改 v7中 toolbar menu的样式)
2024年8月23日 11:30
inarray方法(2个自定义的PHP in_array 函数,解决大量数据判断in_array的效率问题)
2023年11月11日 15:40
python的类怎么输出printf(python怎么直接输出结果个数)
2024年7月15日 08:04
fetching中文(英国人过新年的风土习俗(要英文的加中文解释))
2024年8月25日 15:35
魔方教程一步一步图解视频第4步(魔方的教程一步一步的教视频)
2024年7月15日 21:17
maven依赖包加载不到(jenkins错误:找不到或无法加载 主类+.Develop.apache-maven-3.6.3)
2024年8月10日 10:41
servlet跳转jsp页面空白(使用servlet访问jsp页面显示空白,但是赋值粘贴到HTML里却能显示内容)
2024年9月2日 15:08
getset方法的作用(Java中的Get和Set方法有什么实际意义)
2024年7月12日 09:40
redistemplate是什么(redistemplate的excute方法是多线程吗)
2024年8月30日 02:45
css设置图片过渡效果(css3中设置一个过渡效果,怎么让其一直保持过渡效果而不返回原来的状态)
2024年8月25日 10:20
sql查询同一个字段不同值(sql如何根据一个字段的多个值查询)
2024年7月14日 10:15