当前位置:  开发笔记 > 编程语言 > 正文

生成私有,唯一,安全的URL

如何解决《生成私有,唯一,安全的URL》经验,为你挑选了2个好方法。

我想生成一个安全的一键访问类型的URL,类似于下面的示例.我将使用PHP但这是无关紧要的,因为我只是想了解基本概念.一些答案建议使用GUID,但我认为这不会给我一个绝对独特,安全的URL,如下所示.

#    Google Calendar
3qq6jlu04ptlhmb9fencsu5t2k
#    Private
3qq6jlu04ptlhmb9fencsu5t2k
#    Private 'token'
163a0afe7fkb1ba2acd04c11ef0eefe8
#    LogMeIn
#    1024 bit - 128 Character URL
72oxuj0fzefqo3fu04xjtvmd0adj2948rfh7g5by4forkwcy7t651z7hcb6kjjgqkxmvmfqpyrcfy15z1fto8ewcxstjc6avicag7d5qnoimsm19kb9kgi9i7v6z01d5

我倾向于128字符,1024位样式,因为它看起来非常安全.我想我可以制作四个MD5哈希并合并它们,但这真的有效吗?

对于像这样的网址,我有两个特定的意图,但我确信还有其他人可能会觉得这很有用.

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

2)一次性网址(密码恢复链接)



1> Andrew Barre..:

更新:

对于像单次使用URL这样的东西,我会使用已建议的GUID-esque appoach.确保链接的使用寿命短.

对于即时登录,没有真正安全的方法来拥有单个URL.

是的,你可以生成一个几乎无法猜测的URL,但这并不能给你带来超级安全性.如果您想记住用户,为什么不使用加密的身份验证cookie?

您提供的示例,Google日历不会仅通过网址登录您,您必须先在网址表示任何内容之前进行身份验证.

例如,点击我的Gmail中的谷歌日历给了我:

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

除非您首先通过身份验证,否则这无法帮助您访问我的帐户.

老帖子:

您可以使用com_create _guid在PHP中生成GUID 并使用它.

在Linux上,我认为你可以使用uuid_create,或该代码在这里:




2> BrynJ..:

尝试使用uniqid - 并且可能与md5哈希相结合,如示例中所示:

// no prefix
// works only in PHP 5 and later versions
$token = md5(uniqid());

// better, difficult to guess
$better_token = md5(uniqid(rand(), true));

但是我必须注意,没有以这种方式生成的网址(无论哈希算法是什么)都是"安全的",很难猜测.

推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有