2011-04-17 70 views

回答

0

没有,你不应该把敏感的日期放在cookie中。

对于验证信息,您应该使用会话。

http://www.tizag.com/phpT/phpsessions.php

+0

你是什么意思按会话?据我所知,HTTP中没有会话。 ASP.NET会话可以用cookie来实现。 – Dagang 2011-04-17 05:31:48

0

你可以加密提供了可靠的,公开的,众所周知的算法的信息。然后,如果cookie被复制,收件人将无法从中收集任何信息。

当然这意味着您需要在服务器上进行加密和解密以确保安全,否则(如果您使用JavaScript)可以从JavaScript代码获取私钥并用于解密cookie。您还需要确定您收到的cookie是来自原始收件人还是副本。

既然你必须在服务器端完成它的工作,那么你也可以使用会话。这就像一个cookie,除了传递一个ID而不是实际的数据(该ID用于在服务器上查找数据)。但是仍然可以复制会话cookie并使另一台计算机显示为作为原始登录,这就是FireSheep所做的。

1

如前所述,如果您将验证信息以明文方式放入cookie中,您应该认真考虑使用类似会话的内容。

一旦你有了sesssions,也许你可以将会话ID与后端的IP地址相关联,并检查会话ID和请求IP地址是否匹配:这样,如果有人复制包含会话ID的cookie,然后试图远程访问该站点,会话ID和IP不匹配,并且认证将失败。

+0

我怎样才能得到客户端的IP地址?我没有在HTTP协议中看到它。 – Dagang 2011-04-17 05:51:13

+0

这里是一个与Python的例子:http://stackoverflow.com/questions/979599/extracting-ip-from-request-in-python – thenoviceoof 2011-04-17 06:19:22

+0

基本上,它可能实际上不是HTTP协议的一部分,但你的语言界面应该提供一些方法来获得它 – thenoviceoof 2011-04-17 06:21:04

0

您不应该将认证信息放入cookie本身。设置cookie时,应该创建一个会话,并绑定到一些持久存储(sql/nosql)。

这基本上是一些与其他信息匹配的唯一随机生成的ID。随机生成的ID作为cookie发送。在连续的请求中,您读取cookie,并尝试从中获取用户帐户。

您可以在会话中放置约束,它只能从您分配给它的IP地址访问。你也可以将它绑定到用户代理(尽管这是安全的,用户代理可以配置)。

相关问题