安全令牌在高度缓存的环境中传递Ajax

时间:2011-10-24 01:30:21

标签: ajax security access-token

问候SO社区!

我正在尝试在高度缓存的环境中考虑ajax进程的安全问题,并且可以使用一些建议。我的情况是这样的:

  • 该网站的用户尚未登录。
  • 网站页面经过高度缓存(通过akamai)。
  • 我有一个服务API,可以通过我的域中的页面通过AJAX访问。
  • 我需要保护该API不在我的域外使用。

我可以检查标头中的传入“主机”以查看ajax请求是否来自我的域,但这似乎不安全,因为这样的标头可能是欺骗性的。此外,在我看来,通常的令牌传递方案对我来说不起作用,因为我的页面被缓存,所以我没有机会注入对用户/请求唯一的令牌(例如,如下所述:{{3} })。显然,在页面加载后通过ajax发出令牌请求是不安全的,所以我不确定如何实现这一点。我想我可以生成一个共享使用令牌,该令牌与页面一起加载,其生命周期是我的最大页面缓存寿命的两倍,但似乎必须是更好的方法!

1 个答案:

答案 0 :(得分:0)

你想要完成什么?您是否试图阻止跨网站请求伪造或使用您的API而不是您向用户提供的JavaScript的某些内容?

前者是通过存储在页面源中的令牌完成的。您可以通过在源中使用令牌(或创建令牌的某些代码)来进行XSRF攻击。遗憾的是,除非您可以将每个用户/请求的唯一数据输入源,否则有人可以随时获取您的来源并对令牌进行反向工程。然后他们可以伪造请求。一般规则是不要担心它,除非用户被插入,因为攻击者可以自己去页面。

后者(防止未经授权的使用)在任何情况下都是不可能的。攻击者总是可以创建一个帐户,剥离她需要的令牌/密钥/凭据,然后在他们的服务器上使用一些API。