Questions tagged «cookies»

HTTP cookie是用户的Web浏览器存储的一条数据。除非另有说明,否则可以通过JavaScript以及从服务器端通过HTTP标头创建,读取,修改和删除cookie。


4
将CSRF预防令牌放在cookie中为什么很常见?
我正在尝试了解CSRF的整个问题以及适当的预防方法。(我已阅读,理解并同意的资源:OWASP CSRF预防速查表,关于CSRF的问题。) 据我了解,CSRF周围的漏洞是由以下假设引入的:从Web服务器的角度来看,传入HTTP请求中的有效会话cookie反映了经过身份验证的用户的意愿。但是,源域的所有cookie都被浏览器神奇地附加到了请求上,因此,实际上服务器可以从请求中是否存在有效的会话cookie推断出,该请求来自具有经过身份验证的会话的浏览器。它无法进一步假设有关代码的任何信息在该浏览器中运行,或者是否确实反映了用户的意愿。防止这种情况的方法是在请求中包括其他身份验证信息(“ CSRF令牌”),该信息由浏览器的自动cookie处理以外的其他方式携带。松散地说,会话cookie对用户/浏览器进行身份验证,而CSRF令牌对在浏览器中运行的代码进行身份验证。 简而言之,如果您使用会话cookie来验证Web应用程序的用户,则还应该向每个响应中添加CSRF令牌,并在每个(变异)请求中要求匹配的CSRF令牌。然后,CSRF令牌从服务器到浏览器再返回到服务器,以向服务器证明发出请求的页面已被该服务器批准(由该服务器生成,甚至由该服务器生成)。 关于我的问题,这是关于该往返行程中用于该CSRF令牌的特定传输方法。 似乎很常见(例如在AngularJS,Django,Rails中),将CSRF令牌作为cookie从服务器发送到客户端(即在Set-Cookie标头中),然后让客户端中的Javascript将其从cookie中刮出并附加它作为单独的XSRF-TOKEN标头发送回服务器。 (另一种方法是Express推荐的方法,其中服务器生成的CSRF令牌通过服务器端模板扩展包含在响应主体中,并直接附加到将其提供回服务器的代码/标记中,例如作为隐藏的表单输入。该示例是一种更像Web 1.0的工作方式,但可以推广到使用更多JS的客户端。) 为什么使用Set-Cookie作为CSRF令牌的下游传输如此普遍/为什么这是个好主意?我想所有这些框架的作者都仔细考虑了他们的选择,并没有弄错这一点。但乍看之下,使用cookie来解决cookie的本质设计限制似乎很愚蠢。实际上,如果您使用cookie作为往返传输(服务器的Set-Cookie:下游标头告诉浏览器CSRF令牌,浏览器的cookie:上游标头将浏览器返回给服务器),则会重新引入此漏洞正在尝试修复。 我意识到上述框架并未在CSRF令牌的整个往返过程中使用cookie;他们在下游使用Set-Cookie,然后在上游使用其他内容(例如X-CSRF-Token标头),这确实消除了该漏洞。但是,即使使用Set-Cookie作为下游运输工具,也可能会产生误导和危险;浏览器现在将CSRF令牌附加到每个请求,包括真正的恶意XSRF请求;最好的情况是使请求大于所需的大小,最坏的情况是一些善意却被误导的服务器代码实际上可能会尝试使用它,这确实很糟糕。而且,由于CSRF令牌的实际预期接收者是客户端Javascript,这意味着该cookie不能仅通过http保护。
283 security  cookies  web  csrf  owasp 



22
删除一个cookie
当我想删除Cookie时,我尝试 unset($_COOKIE['hello']); 我从firefox的cookie浏览器中看到该cookie仍然存在。我如何才能真正删除Cookie?
260 php  cookies 


13
跨域Cookie
我在两个不同的域中有两个webapps WebApp1和WebApp2。 我正在HttpResponse中的WebApp1中设置cookie。 如何从WebApp2中的HttpRequest读取相同的cookie? 我知道这听起来很奇怪,因为Cookie是特定于给定域的,并且我们无法从不同域访问它们。但是,我听说过可以在多个Web应用程序之间共享的跨域Cookie。如何使用跨域Cookie来实现此要求? 注意:我正在使用J2EE webapps尝试此操作


3
基于cookie的身份验证如何工作?
有人可以逐步介绍基于Cookie的身份验证的工作方式吗?我从未做过涉及身份验证或Cookie的任何事情。浏览器需要做什么?服务器需要做什么?以什么顺序?我们如何确保事物安全? 我一直在阅读有关身份验证的不同类型和cookie的信息,但是我想对如何将两者一起使用进行基本描述-我只读过它们经常一起使用但找不到描述的方法。

6
使用Cookie提取API
我正在尝试新的Fetch API,但Cookie遇到问题。具体来说,成功登录后,以后的请求中会有一个Cookie标头,但是Fetch似乎忽略了这些标头,并且我使用Fetch进行的所有请求都是未经授权的。 是因为Fetch尚未准备就绪还是Fetch无法与Cookie配合使用? 我使用Webpack构建我的应用程序。我还在React Native中使用Fetch,它没有相同的问题。
198 cookies  fetch-api 

8
是否每个Web请求都发送浏览器cookie?
是否每个Web请求都发送浏览器的cookie? 我不是在说网页浏览量,而是在请求图像,.js文件等。 更新 如果一个网页有50个元素,即50个请求。为什么会为每个请求发送SAME cookie,为什么不缓存或知道它已经拥有它?
197 cookies 

9
HttpOnly cookie如何与AJAX请求一起使用?
如果在基于cookie的访问限制的网站上使用AJAX,则JavaScript需要访问cookie。HttpOnly cookie可以在AJAX网站上使用吗? 编辑: Microsoft创建了一种方法,通过在指定HttpOnly的情况下禁止对cookie的JavaScript访问来防止XSS攻击。FireFox后来采用了此方法。所以我的问题是:如果您在像StackOverflow这样的网站上使用AJAX,是否可以选择仅使用Http的cookie? 编辑2:问题2。如果HttpOnly的目的是防止JavaScript访问cookie,并且您仍然可以通过XmlHttpRequest对象通过JavaScript检索cookie,那么HttpOnly的意义何在? 编辑3:以下是维基百科的引文: 当浏览器收到这样的cookie时,应该在以下HTTP交换中照常使用它,而不是使其对客户端脚本可见。[32] 该HttpOnly标志不是任何标准的一部分,并且并非在所有浏览器中都实现。请注意,当前无法阻止通过XMLHTTPRequest读取或写入会话cookie。[33]。 我了解document.cookie您使用HttpOnly时会被阻止。但是似乎您仍然可以在XMLHttpRequest对象中读取cookie值,从而允许使用XSS。HttpOnly如何使您比这更安全?通过使cookie本质上是只读的? 在您的示例中,我无法写信给您document.cookie,但是我仍然可以窃取您的cookie并使用XMLHttpRequest对象将其发布到我的域中。 <script type="text/javascript"> var req = null; try { req = new XMLHttpRequest(); } catch(e) {} if (!req) try { req = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) {} if (!req) try { req = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) {} req.open('GET', 'http://stackoverflow.com/', false); …
195 ajax  cookies  httponly 

13
在JavaScript中按名称读取Cookie的最短函数是什么?
在JavaScript中读取Cookie的最短,准确且跨浏览器兼容的方法是什么? 很多时候,在构建独立脚本时(我没有任何外部依赖项),我发现自己添加了一个读取cookie的函数,并且通常回退到QuirksMode.orgreadCookie()方法(280字节,最小为216)。 function readCookie(name) { var nameEQ = name + "="; var ca = document.cookie.split(';'); for(var i=0;i < ca.length;i++) { var c = ca[i]; while (c.charAt(0)==' ') c = c.substring(1,c.length); if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); } return null; } 它确实可以完成工作,但是很丑陋,并且每次都会增加很多膨胀。 jQuery.cookie的方法使用如下格式(修改后的165字节,最小为125): function read_cookie(key) { var result; return (result = …

19
具有显式域的localhost上的Cookie
我一定缺少关于Cookie的一些基本知识。在本地主机上,当我设置在服务器端的cookie,并明确指定域为localhost(或.localhost)。该cookie似乎未被某些浏览器接受。 Firefox 3.5:我在Firebug中检查了HTTP请求。我看到的是: Set-Cookie: name=value; domain=localhost; expires=Thu, 16-Jul-2009 21:25:05 GMT; path=/ 或(当我将域设置为.localhost时): Set-Cookie: name=value; domain=.localhost; expires=Thu, 16-Jul-2009 21:25:05 GMT; path=/ 无论哪种情况,都不会存储cookie。 IE8:我没有使用任何额外的工具,但是cookie似乎也没有被存储,因为它不会在随后的请求中发回。 Opera 9.64: localhost和.localhost都可以使用,但是当我在“首选项”中检查cookie列表时,即使该域在localhost(在列表分组中)下列出,该域也设置为localhost.local。 Safari 4: localhost和.localhost都可以使用,但是在“首选项”中它们始终列为.localhost。另一方面,没有显式域的cookie,仅显示为localhost(无点)。 本地主机有什么问题?由于存在许多这样的不一致,因此必须有一些涉及本地主机的特殊规则。另外,我还不完全清楚为什么必须在域名前加点号?RFC 2109明确指出: 域属性的值不包含嵌入的点或不以点开头。 为什么?该文件表明它必须在安全方面做些事情。我不得不承认我还没有阅读整个规范(以后可能会做),但这听起来有些奇怪。基于此,将不可能在本地主机上设置cookie。
191 cookies  setcookie 

12
Cookie与会话
我几个月前开始使用PHP。为了为我的网站创建一个登录系统,我阅读了有关cookie和会话及其区别(cookie存储在用户的浏览器中以及服务器上的会话中)的信息。那时,我更喜欢cookie(谁不喜欢cookie ?!),只是说:“谁在乎?我将它存储在服务器中并没有什么好处”,所以,我继续使用cookie我的学士毕业项目。但是,在完成我的应用程序的大部分之后,我听说对于存储用户ID的特定情况,会话更为合适。因此,我开始考虑如果陪审团问我为什么要使用Cookie而不是会议?我有这个理由(我不需要在内部存储有关用户的信息)。?还是不止于此? 您能告诉我使用Cookie保留用户ID的优缺点吗? 谢谢大家在StackOverflow中!
188 php  session  cookies 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.