我在cookie中添加了一些认证信息。出于安全原因,我想阻止某人将cookie复制到另一台计算机并使用它登录。我该怎么做?有没有方法可以防止cookie在另一台计算机上使用?
回答
你是什么意思按会话?据我所知,HTTP中没有会话。 ASP.NET会话可以用cookie来实现。 – Dagang 2011-04-17 05:31:48
你可以加密提供了可靠的,公开的,众所周知的算法的信息。然后,如果cookie被复制,收件人将无法从中收集任何信息。
当然这意味着您需要在服务器上进行加密和解密以确保安全,否则(如果您使用JavaScript)可以从JavaScript代码获取私钥并用于解密cookie。您还需要确定您收到的cookie是来自原始收件人还是副本。
既然你必须在服务器端完成它的工作,那么你也可以使用会话。这就像一个cookie,除了传递一个ID而不是实际的数据(该ID用于在服务器上查找数据)。但是仍然可以复制会话cookie并使另一台计算机显示为作为原始登录,这就是FireSheep所做的。
如前所述,如果您将验证信息以明文方式放入cookie中,您应该认真考虑使用类似会话的内容。
一旦你有了sesssions,也许你可以将会话ID与后端的IP地址相关联,并检查会话ID和请求IP地址是否匹配:这样,如果有人复制包含会话ID的cookie,然后试图远程访问该站点,会话ID和IP不匹配,并且认证将失败。
我怎样才能得到客户端的IP地址?我没有在HTTP协议中看到它。 – Dagang 2011-04-17 05:51:13
这里是一个与Python的例子:http://stackoverflow.com/questions/979599/extracting-ip-from-request-in-python – thenoviceoof 2011-04-17 06:19:22
基本上,它可能实际上不是HTTP协议的一部分,但你的语言界面应该提供一些方法来获得它 – thenoviceoof 2011-04-17 06:21:04
您不应该将认证信息放入cookie本身。设置cookie时,应该创建一个会话,并绑定到一些持久存储(sql/nosql)。
这基本上是一些与其他信息匹配的唯一随机生成的ID。随机生成的ID作为cookie发送。在连续的请求中,您读取cookie,并尝试从中获取用户帐户。
您可以在会话中放置约束,它只能从您分配给它的IP地址访问。你也可以将它绑定到用户代理(尽管这是安全的,用户代理可以配置)。
- 1. 无法在一台计算机上运行jar,但可以在另一台计算机上运行
- 2. htaccess mod_rewrite没有在另一台计算机上工作
- 3. 会话在一台计算机上工作,但没有在另一台计算机上工作
- 4. 有没有一种方法可以防止Spring Boot重载bean?
- 5. 如何防止将PDF复制到另一台计算机
- 6. UrlGenerationError在一台计算机上没有路由匹配,但在另一台计算机上没有路由匹配
- 7. 在一台计算机上使用Powershell在另一台计算机上执行PowerShell脚本
- 8. 使用PowerShell从另一台计算机启动计算机
- 9. 有没有一种方法可以在Linux上使用C++
- 10. 有没有一种方法可以使用LINQ语句来计算行数?
- 11. 另一台计算机
- 12. 从另一台计算机
- 13. 另一台计算机上的xperfview
- 14. 可以将Windows vpc从一台计算机复制到另一台计算机上?
- 15. 有没有一种可行的DRM方法可以防止录制最终流?
- 16. 有没有一种方法可以防止用户输入数字()
- 17. 有没有一种方法可以防止保存在Tortoise中的验证SVN
- 18. mulltiple占单台计算机上的cookie
- 19. 有没有办法在OSX中捕获控制台控件(键盘/鼠标/远程),以便它们可以在另一台计算机上复制?
- 20. 在另一台计算机上使用Access数据库与C#
- 21. 使用Airflow在另一台计算机上安排任务
- 22. 在另一台计算机上使用Github
- 23. 可以使用tensorflow将word2vec算法分布在多台计算机上吗?
- 24. 有没有一种方法可以在没有while循环的计算机之间进行数据通信? C++
- 25. 用于CATIA的VBA宏在一台计算机上工作,并且在另一台计算机上不工作
- 26. 有没有一种方法可以在直播网站上使用drawWindow()方法?
- 27. 有没有一种方法可以使javascript不计算某个特定字符?
- 28. Dll在另一台计算机上无法正常工作
- 29. 可能为一台计算机上的“网络服务”授予另一台计算机上的目录权限?
- 30. 是否可以从一台计算机(通过终端远程访问另一台计算机)将文件复制到另一台计算机?
你不能。别。 – 2011-09-02 02:28:46