在缓存环境中验证客户端Web服务请求

时间:2010-06-28 02:20:46

标签: ajax security caching web-services

我们正在构建一组外部Web服务,供我们站点的访问者使用客户端(使用jquery / AJAX)。 Web服务需要公开,但我们希望限制对网站访问者的访问。

重要的是,该网站位于CDN后面,我们将页面内容缓存24小时; AJAX请求最好也会被缓存,但我有意识这样做会限制我们的身份验证选项。我们的访问者匿名访问该网站和服务。

用于验证客户端请求的标准“模式”是什么?我本身并不处理机密数据,但确实希望阻止其他用户/网站因责任(思考数据分发)和性能原因而劫持这些服务。

我正在考虑一个共享的秘密,每天都会刷新并在所有客户的网站范围内使用;任何Web服务请求都包含该秘密。非常基本,但是还有其他更好的方法让服务以不会被欺骗的方式检测来电者的来源吗?

1 个答案:

答案 0 :(得分:0)

如果对您的Web服务的威胁与自动执行客户端调用的人有关,则可以在服务器端实施速率限制。正如您所正确提到的,客户可能需要为每个请求提供密钥。或者,如果只有凡人将与Web服务进行交互,您还可以实现像Captcha等人类交互证明。确保客户端使用的“密钥”需要以受控方式提供。我曾经遇到一个基本上放弃无限密钥的系统 - 这意味着自动化控制将无效,因为攻击者可以请求尽可能多的密钥并进行无限制的呼叫。如果您正在限制使用IP地址,请确保在主机部分(X)可以更改时(当用户位于代理后面时)限制IP地址(ABCX)的网络部分上的请求如果您的客户端是匿名的,则最好/最接近的“标识符“确实是地址。