我正在设计一个身份验证库,我正在考虑设计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 :(得分:1)
基础是在cookie中存储至少两个信息以识别用户:
让我们为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值(并重建“官方”哈希),轻松检索用户信息。