php – 生成专用,唯一,安全的URL

前端之家收集整理的这篇文章主要介绍了php – 生成专用,唯一,安全的URL前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想生成一个安全的一键访问类型的url类似于下面的例子.我会使用 PHP,但这是无关紧要的,因为我只是想了解基本的概念.一些答案建议使用GUID,但我不认为这会给我一个绝对唯一的,安全的URL,如下所示.
#    Google Calendar
3qq6jlu04ptlhmb9fencsu5t2k
#    Private
3qq6jlu04ptlhmb9fencsu5t2k
#    Private 'token'
163a0afe7fkb1ba2acd04c11ef0eefe8
#    LogMeIn
#    1024 bit - 128 Character URL
72oxuj0fzefqo3fu04xjtvmd0adj2948rfh7g5by4forkwcy7t651z7hcb6kjjgqkxmvmfqpyrcfy15z1fto8ewcxstjc6avicag7d5qnoimsm19kb9kgi9i7v6z01d5

我倾向于这个128个字符,1024位风格,因为它似乎非常安全.我想我可以做四个MD5哈希并合并,但是真的有效吗?

我有两个这样的URL的具体意图,但我确定有其他人可能会发现这有用.

1)即时登录用户的快捷方式/图标

2)一次性使用的URL(密码恢复链接)

更新:

对于类似于单一使用网址的内容,我可以使用已建议的GUID-esque appoach.请确保链接的寿命短.

为了即时登录,没有一个真正安全的方式来拥有一个URL.

是的,你可以生成一个几乎不可能猜到的URL,但这不会给你超级安全.如果你想记住用户,为什么不使用加密的认证cookie?

您提供的示例,Google日历不会通过URL单独登录,您必须在URL意味着任何事情之前首先进行身份验证.

例如.点击谷歌日历从我的Gmail给我:

https://www.google.com/calendar/render?tab=mc&gsessionid=-LTeHrnKoeAbDcVaN68NHA

这不能帮助您访问我的帐户,除非您首先认证为我.

老帖子

您可以使用com_create _guidPHP生成GUID,并使用它.

在linux上我觉得可以使用uuid_create,或者这个代码here

<?PHP
 function guid(){
 if (function_exists('com_create_guid')){
       return com_create_guid();
   }else{
       mt_srand((double)microtime()*10000);//optional for PHP 4.2.0 and up.
       $charid = strtoupper(md5(uniqid(rand(),true)));
       $hyphen = chr(45);// "-"
       $uuid = chr(123)// "{"
               .substr($charid,8).$hyphen
               .substr($charid,8,4).$hyphen
               .substr($charid,12,16,20,12)
               .chr(125);// "}"
       return $uuid;
   }
}
echo guid();
?>

猜你在找的PHP相关文章