2011-11-23 120 views
0

我在设计一个认证库,我正在考虑cookies的设计。我希望你能分享一些想法或建议。auth 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 
+0

在这可能有一些答案可能会让你感兴趣:http://stackoverflow.com/questions/8237086/good-secure-way-to-remember-a-user-checkbox –

+0

我希望你在发布前炒作cookie数据? ;-)但如果你解决更具体的问题,这可能会有用,所以人们可以更具体地回答。 – CodeCaster

回答

1

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

  • 事情告诉你这是谁(一个用户通常ID)
  • 事情告诉你这是真的该用户(针对用户ID的类型的挑战)

让我们为约翰用户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值(并重新构建“官方”hash)来轻松检索用户信息。

相关问题