您好,匿名用户
随意问技术百科期待您的加入

如何防止cookie伪造?

0 投票

我用的php,初学者的做法一般就是
这样设置

setcookie('username','xxx',time()+3600*24);
setcookie('password','xxx',time()+3600*24);

再这样读取

$logged = false;
$username = @$_COOKIE['username'];
$password = @$_COOKIE['password'];
if(isset($username)&&isset($password)){
    $logged=true;
    $user = getUser($username,$password);
}

这种做法的话用户名和密码就都是明文保存在本地的,不安全对吧。
那我可以加密后再保存到cookie里,登陆的时候再在后台程序里解密,加解密的方法只有我自己知道。
这样是可以避免用户名密码泄露,但是要通过cookie伪造登陆应该还是很方便。
我想知道后者一般是如何避免的?谢谢大家啦

用户头像 提问 2012年 12月1日 @ Wukong 上等兵 (475 威望)
分享到:

1个回答

0 投票

你说的这种方法是最原始的方法,一般说来仅供学习cookie原理时使用,在实际的开发中一般是不会把密码这种敏感信息直接以明文方式存放在cookie中的。

现在更通用的做法是使用session来标识用户,也就是说我们为每个客户端生成一个唯一的id,然后在服务端存储这个id所对应的状态。

这样cookie里面仅仅保存了这个id,而没有任何其他的东西。而且这个id往往还有个特性,它是随机生成,且每次登陆都会产生一个新的。这样就更降低了信息泄漏的风险。

在php里你可以使用以下代码来启用和调用session保存的值,因为它们都是保存在服务器端,所以是安全的。

session_start();

$_SESSION['username'] = 'xxx';
$_SESSION['password'] = 'xxx';

var_dump($_SESSION);
用户头像 回复 2012年 12月1日 @ Saber 中士 (1,234 威望)
提一个问题:

相关问题

+2 投票
1 回复 262 阅读
用户头像 提问 2012年 12月25日 @ Talon 上等兵 (294 威望)
0 投票
1 回复 35 阅读
用户头像 提问 2012年 12月1日 @ Soraka 上等兵 (319 威望)
+1 投票
1 回复 57 阅读
用户头像 提问 2013年 1月28日 @ Fizz 上等兵 (325 威望)
0 投票
1 回复 133 阅读
用户头像 提问 2012年 12月1日 @ Xin Zhao 上等兵 (320 威望)
0 投票
1 回复 126 阅读
用户头像 提问 2012年 12月1日 @ Lucia 上等兵 (416 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...