如何解决有人如何重复使用Cookie?
| 在我的登录应用程序中,如果用户想记住他的登录信息,则设置以下两个cookie:setcookie( \"userid\",\"my_name\",time()+3600*24*30,\"/\",\"mydomain.com\" );
setcookie( \"login_key\",\"d776a29aba831a7d71e964256c3e1817\",\"mydomain.com\" );
现在,如果用户已将登录信息存储在公用计算机上,则任何人都可以非常轻松地看到Cookie。
现在我的问题是,如果有人访问这些cookie,他如何在另一台计算机上使用它们?设置一个PHP文件并在其中添加上述几行内容是否一样容易?还是有可能但并不容易?
PS。 login_key不是密码,但始终相同。
解决方法
有用于浏览器的插件,可让用户编辑Cookie
https://addons.mozilla.org/en-us/firefox/addon/add-n-edit-cookies/
如果黑客获得了一些cookie,则他们仅使用如上所述的某种浏览器插件,并尝试放入他们拥有的cookie。
真的没有办法完全避免这种情况。
但您可以在某种程度上依赖HTTP_USER_AGENT。
<?php
session_start();
if (isset($_SESSION[\'HTTP_USER_AGENT\']))
{
if ($_SESSION[\'HTTP_USER_AGENT\'] != md5($_SERVER[\'HTTP_USER_AGENT\']))
{
/* Prompt for password */
exit;
}
}
else
{
$_SESSION[\'HTTP_USER_AGENT\'] = md5($_SERVER[\'HTTP_USER_AGENT\']);
}
?>
在这里还有更多,您也可以比较IP地址。.(但是许多人会使用“记住我”选项,并且一般来说,家庭用户将拥有动态IP)
, 是的,这是cookie的缺点。我以为您login_key
正在与您的数据库对话,对吗?如果是这样,则在数据库中为该密钥存储其他信息,例如IP和用户代理,然后也将它们进行比较以尝试限制从另一台计算机登录。
, 非常简单。您只需转到浏览器的Cookie存储并对其进行修改。此后,您的浏览器将与原始收件人一样拥有cookie。
在我的情况下(Chrome 12),Cookie存储在“ 4”中。使用十六进制编辑器打开此文件将显示它是一个SQLite数据库,可以轻松访问和修改它。
确实,跨站点脚本(XSS)攻击的全部目的是获取会话cookie,将其存储在攻击者的浏览器中,从而劫持受害者的会话。
, 可以编辑cookie,实际上这不仅可行而且很容易。您应该始终假设用户具有此功能。
通常,最好使用仅存储在服务器上的密钥来存储加密的值。这样就可以看到cookie,但是他们无法更改它,因为它们在服务器上没有私钥。至少那是我的建议。
您也可以只将UUID存储在cookie中,然后将持久性信息(例如登录名,登录时间等)存储在数据库中。
, 如果您的Cookie只是不受时间,IP地址,用户代理字符串或任何可用于从另一台计算机确定一台计算机的约束的常数,那么任何能够读取它们的人都可以将其原封不动地发送到您的应用程序,无法分辨你和那个家伙之间的区别。这就像发送相同的Cookie
标头一样容易,对于任何对此感兴趣的人,这都是一件微不足道的任务。
我建议您先阅读一些有关保护HTTP会话的文章。 PHP有很多有关如何正确执行操作的示例。 (不幸的是,它也有很多不好的例子,所以要小心。)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。