我想生成一个安全的一键访问类型的url类似于下面的例子.我会使用
PHP,但这是无关紧要的,因为我只是想了解基本的概念.一些答案建议使用GUID,但我不认为这会给我一个绝对唯一的,安全的URL,如下所示.
# Google Calendar 3qq6jlu04ptlhmb9fencsu5t2k # Private 3qq6jlu04ptlhmb9fencsu5t2k # Private 'token' 163a0afe7fkb1ba2acd04c11ef0eefe8 # LogMeIn # 1024 bit - 128 Character URL 72oxuj0fzefqo3fu04xjtvmd0adj2948rfh7g5by4forkwcy7t651z7hcb6kjjgqkxmvmfqpyrcfy15z1fto8ewcxstjc6avicag7d5qnoimsm19kb9kgi9i7v6z01d5
我倾向于这个128个字符,1024位风格,因为它似乎非常安全.我想我可以做四个MD5哈希并合并,但是真的有效吗?
我有两个这样的URL的具体意图,但我确定有其他人可能会发现这有用.
2)一次性使用的URL(密码恢复链接)
更新:
对于类似于单一使用网址的内容,我可以使用已建议的GUID-esque appoach.请确保链接的寿命短.
为了即时登录,没有一个真正安全的方式来拥有一个URL.
是的,你可以生成一个几乎不可能猜到的URL,但这不会给你超级安全.如果你想记住用户,为什么不使用加密的认证cookie?
您提供的示例,Google日历不会通过URL单独登录,您必须在URL意味着任何事情之前首先进行身份验证.
例如.点击谷歌日历从我的Gmail给我:
https://www.google.com/calendar/render?tab=mc&gsessionid=-LTeHrnKoeAbDcVaN68NHA
这不能帮助您访问我的帐户,除非您首先认证为我.
老帖子
您可以使用com_create _guid在PHP中生成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(); ?>