auth cookies应该是什么样的?

时间:2011-11-23 22:25:13

标签: php cookies authentication

我正在设计一个身份验证库,我正在考虑设计cookie。我希望你能分享一些想法或建议。

以下是一些现实世界的例子:

site: stackoverflow.com
name: usr
content: t=Q7k6OGJUK39E&s=f3RhRndgkeiv

site: vimeo.com
name: uid
content: 1186974%7Cuser1186974%7C1232475869%1C0

site: github.com
name: gh_sess_
content: BAh7CjoQZmluZ2VycHJpbnQiJWZlYzdmNWFhNjJmYjJhNDg6OTJkYWQzMjdmMjRiYWY5Ogl1c2VyaQNqzwI6DGNvbnRleHQiBi86D3Nlc3Npb25faWQiJWE1MjU0MDRiNTk0YmZmMzczMHJhNDkzMGYyHzkyBmJiIgpmbGFzaElDOidBY3Rpb25Db250cm9sbGVyOjpGbGFzaDo6Rmxhc2hIYXNoewAGOgpAdXNlZHsA--e9d4def787b537f1bbacdb7d625fc06361fbe46a

1 个答案:

答案 0 :(得分:1)

基础是在cookie中存储至少两个信息以识别用户:

  • 告诉你这是谁(通常是用户ID)
  • 告诉你这是真的这个用户(一种针对用户ID的挑战)

让我们为John用户ID#42构建一个用户哈希。 约翰的登录名是“john_demo” 您的网站将有一个秘密盐,只是一个随机字符串,阻止伪造哈希。

<?php
$login = "john_demo";
$id = 42;
$salt = "ùoajamen!k);p67!è§çRIUV";
$hash = sha1(sha1("$id:$login:$salt").$salt);
$cookie_value = base64_encode($id.':'.$hash);

哈希连续两次加盐(两次sha1调用)。 你可以通过base64解码cookie,提取id,然后检查你的cookie有效的db值(并重建“官方”哈希),轻松检索用户信息。