“可分享”网址安全指南

时间:2010-12-09 16:39:44

标签: security url couchdb

我正在计划一个允许用户无需登录即可创建资源的网络应用。我计划通过创建独特的难以猜测的网址来使用Google Docs / Pastebin安全风格。 (例如example.com/ytasdfweoirue /)

有什么值得注意的事项?您在设计令牌生成器时会使用哪些准则?我应该考虑哪些事情?是否有最好的角色可供选择?

我的后端很可能是CouchDB,但我对平台无关,通用指南和可能在任何平台上出现的问题感兴趣。

2 个答案:

答案 0 :(得分:0)

你没有提到你的技术堆栈,但这里最好的选择听起来像是Guid。请输入你的网址:

http://whatever.com/resource/ {GUID}

Guids足够长,难以猜测或枚举,你有一个很强的保证,你不会产生两个相同的guid。只要你不是javascript,你的语言应该有一个guid生成器作为内置(.net)或库。

以下是更多讨论的维基百科页面:http://en.wikipedia.org/wiki/Globally_unique_identifier

答案 1 :(得分:0)

使用PRNG

您应该生成一个PRNG的随机网址,而不是您框架中最简单的Random()函数。 (仅供参考.FYI理论上,.NET GUID不是为安全而设计的,在Web应用程序的实践中你应该没问题,但是你已被警告

请勿在“隐藏”页面中包含第三方资源

确保访问者访问的页面不包含任何第三方资源(javascripts,图像,flash动画等)。几乎所有这些资源都会通过REFERRER泄漏当前URL,并且您的隐藏URL将暴露给所有第三方派对。即使您使用HTTPS并且包含的​​URL使用HTTP,也是如此。

如果您需要处理推荐人,请不要包含指向第三方网站的链接

如果您投放的网页包含指向第三方网址的链接,则再次发生REFERRER泄露可能会出现问题。在这种情况下,您可以从公共页面重定向它们(如果这样做时要小心Open Redirect个漏洞),或者您可以使用JavaScript技巧来删除REFERRER。