2013-03-08 51 views
0

我当时使用Fiddler在现场查看网站如何在他们的登录系统中使用cookie。虽然我有一些HTTP知识,但我只是在了解Cookie以及它们在网站中的使用方式。关于网络登录系统中cookie的工作方式

最初,我认为在提交表单时,我看不到发送cookie,并且响应将包含一些cookie信息,然后由浏览器保存。

事实上,恰恰相反,情况似乎如此。这是发送信息的请求,服务器不返回任何内容。

在摆弄这个问题,我注意到,即使清洗饼干的浏览器,客户端似乎永远是发送RequestVerificationToken到服务器上,即使只是随便看看withot的签字。

为什么这是吗?

感谢

+0

你在问一个普遍的问题,但描述了特定的行为。我相信RequestVerificationToken是asp.net。 – flup 2013-03-17 23:33:51

回答

0

当你点击一个网站的一个网页,通常的反应(你到达的网页)包含在HTTP响应设置一些饼干服务器的说明。

网站可能会使用这些信息跟踪您的行为信息或保存您的偏好以备将来或短期使用。

网站可能会在您首次访问任何网页或访问特定网页时这样做。

然后,浏览器会发送所有已经设置好的cookie给后续的请求。

想一想,HTTP是无状态的。你登陆主页并点击背景设置为蓝色。然后你去了一个画廊页面。下一个请求会发送到您的服务器,但服务器不知道您的背景颜色首选项。

现在,如果请求包含一个cookie,告诉服务器您的偏好,该网站将为您提供合适的偏好。

现在这是一种方式。另一种方法是会话。将cookie看作存储在客户端的信息。但是如果服务器需要在服务器端存储一些关于你的临时信息呢?信息可能过于敏感,无法在Cookie中公开,这些Cookie本地且易于拦截。

现在你会问,但HTTP是无状态的。正确。但是服务器可以在地图上保存关于你的信息,地图是会话ID。此会话标识在客户端被设置为cookie或重新发送参数中的每个请求。现在服务器只能获取密钥,但可以查找关于您的信息,例如您是否已成功登录,您在系统中的角色是什么等。

哇,这很多文字,但我希望它有帮助。如果不能随意问更多。

2

Cookie由服务器通过Set-Cookie HTTP响应标头设置,也可以通过JavaScript设置。

一个cookie有一个路径。如果cookie的路径与正在请求的文档的路径匹配,那么浏览器将在Cookie HTTP请求标头中包含所有这样的cookie。

为了避免对用户造成XSS攻击,您在设置或修改cookie时务必要小心。因此,在您的登录表单中包含隐藏和唯一的秘密,并在设置任何Cookie之前使用此类秘密可能会很有用。或者,您可以简单地检查HTTP Referer标题是否与您的网站匹配。否则,恶意网站可以复制您的表单字段,并在其网站上为您的网站创建登录表单,并通过毫无防备的用户执行form.submit(),有效注销用户或对您的网站执行暴力攻击恰巧正在访问恶意网站。

您提到的RequestVerificationToken与HTTP Cookie无关,这听起来像是一些使用某种特定站点脚本语言编写的站点用于保护其Cookie设置页面免受XSS攻击的实现细节。