任何人都可以轻松获取$_COOKIE数据吗?


Is it easy for anyone to grab your $_COOKIE data?

他们只需要你的cookie文件然后服务器就会授予他们cookie存储的访问权限吗?或者还有更多的原因?因为我计划md5一些cookie数据,但要确保它不是很容易让人抓取数据并模仿它。

你的问题令人困惑。cookie是存储在客户端计算机上的信息,在每次请求(通常是指示客户端存储它的请求,但不一定)时发送给服务器。

因此,当cookie由服务器发送给客户端(用于存储)或由客户端发送给服务器时,任何拦截cookie的人都可以复制cookie(因此,服务器将获得$_COOKIE的值)。

不幸的是,cookie经常存储信息,如果被拦截,攻击者就可以冒充另一个用户。为了避免拦截,必须使用https。拦截对于临时攻击者来说不是微不足道的(除了在未受保护的WiFi网络上),但对于政府,isp和网络管理员来说,这是触手可及的。

但是你的问题引起了更大的关注:

因为我计划md5一些cookie数据,但要确保它不是很容易让人抓取数据和模仿它。

根据这意味着什么,这可能是一个非常不安全的设置。cookie可以被任何客户端伪造,也就是说,即使服务器从未告诉特定客户端存储该cookie,它也可以被发送。因此,如果你正在做一些事情,比如在cookie中存储md5('is_admin:1')值,要知道任何人都可以伪造这些数据,尽管有md5哈希(只要他能推断出它的格式)。

是的,任何人嗅探任何人的cookie都可以使用它们,除非您使用https协议。然而,即使是FTP,攻击者可以直接访问该机器,他也可以毫无问题地使用这些cookie。您可以通过https或检查ip地址/确切的用户代理匹配来保护它们。

cookie是客户端发送给服务器的请求的一部分。这是可能的,然后(理论上),从一个浏览器传输到另一个浏览器,同步它在一些中心位置,等等。如果有人能够读取另一个人的cookie,那么这个人就完全能够"窃取"凭据。

在这种特殊情况下,可以通过使用HTTPS加密协议来增加很多安全性。但是,即使在那里,根据浏览器的实现,如果用户的计算机被入侵,cookie文件本身被复制,理论上也有可能突破。当然,如果用户的电脑被入侵了,我们也无能为力。

你最好使用HTTPS。一旦这样做了,那么您就已经做了所有可以保护连接和与之相关的cookie的事情。

是的,会话令牌cookie通常是所有需要的。在大多数应用程序中,如果会话令牌被破坏,则会话可能被劫持,用户可能被冒充。

回答你的第二个问题,cookie可以很容易或很难被拦截和破坏。这取决于你如何保护它们。

保护cookie的主要防御是使用SSL/TLS加密客户端和服务器之间的连接。如果你在没有SSL/TLS的情况下传输cookie,那么同一网络上的任何人或者可以看到两者之间的网络的人都可以看到明文格式的cookie并使用它。因此,如果您关心cookie安全性(和会话安全性),请使用SSL/TLS。

我很好奇。

"因为我计划md5一些cookie数据,但要确保它不是有人很容易获取数据并模仿它。"

这是什么意思?如果要确保数据受到保护,为什么要MD5数据并将其存储在cookie中呢?如果它需要被保护,它需要留在服务器上