取决于两个网站的独立程度。如果他们共享私人数据(数据库或某个文件空间)的访问权限,那么您可以考虑在它们之间传递一个随机值。否则,如果您可以使用time + salt方法,它只允许那些具有相同salt /算法的用户生成有效的URL。
中号 =主要网站
^h =帮助网站
ķ =它们之间传递密钥值(以纯文本格式是罚款)
答:服务器时间+盐:
XMIT:M哈希时间(四舍五入为 - 最接近t en分钟标记)+一些随机值(盐)使K。并将K附加到帮助URL(更好的是帮助请求是POST
,所以K对用户不可见)。
RCV:^h完成使用相同的算法相同的散列,如果它的散列相匹配的供应ķ则访问。否则H显示一个空白页面(或许为了安全起见,他们希望网站的详细信息保密)或错误消息(更多风险,但对合法用户有帮助)。
REQ:同一台服务器上的两个站点或时间上合理同步的服务器上的两个站点 - 由于10分钟量化,无需完美同步。重要的是,两台服务器的盐值是相同的,并且不能公开访问(如果第三方曾经发现它的风险,它也可以更新)。
安全:盐是从来没有过的两个服务器之间的纯文本,而是因为只有通过了关键的工作了一段时间,甚至有人嗅探值(或复制出来源的M个)的能只能暂时访问。您需要四舍五入到最接近的n分钟标记,以便(a)给页面访问者提供合理的时间请求帮助(b),因为请求和检查相距少量时间;(c)因为如果网站在不同的服务器上的时间不一样。安全来自于保持盐和时间计算算法的私密性。
注:在^h您可能需要测试的ķ两个值允许风口浪尖情况下四舍五入导致中号和^h到不同的时间(因为不同的时间或因延迟在处理)
B:数据库/文件密钥:
XMIT:M为K生成一个随机值,并将它和一个到期时间存储在数据库表或文件中,其中H可以访问。再次中号附着ķ(未超时)到GET或POST请求ħ。
RCV:^h检查对存储的值的列表中的值,如果发现没有超时则访问。
REQ:这两个站点都可以访问共享文件存储或数据库。数据库表或文件将需要存储多个随机值。无论是中号或^h应该清理过期的项目(无论是作为他们的操作代码的一部分,或计划任务[cron作业]可以设置定期完成此)
安全:虽然K以纯文本形式存在,没有必要了解它 - 再次,嗅探该值或从某处将其从源复制出来只会临时授予对H的访问权限。
总体
根据您是用户的击球超时,或使用“发现”键就可以使用AJAX来产生价值的帮助按钮被点击时,保持超时非常未经授权的来源如何宽容低(17秒?)
这太好了。将尝试一下。非常感谢你! – 2011-02-02 10:10:39