防止启用Silverlight的WCF服务的CSRF(或跨站点请求伪造/ XSRF)

时间:2011-08-08 09:12:28

标签: silverlight wcf security csrf

使用USB令牌/智能卡保护启用Silverlight的WCF服务通信。必须通过输入PIN来确认第一次访问。经过身份验证后,恶意网站可以使用IMG-Tags和/或JavaScript启动对WCF服务的CSRF请求。根据{{​​3}},这里常用的技术是使用(会话)令牌或所谓的“nonce”,而检查HTTP Referrer头部已被证明是不安全的。

我理解这背后的想法,根据我的理解,如果您有一个表单(即联系表单)和单个服务,您可以确保用户在发送之前必须查看并填写表单,这样做效果很好。在Silverlight应用程序中,我无法预定义此类序列,许多请求(如请求产品的价格更新)可以按任意顺序启动。

您是否有一些建议我应该如何保护Silverlight到WCF通信以防止CSRF攻击,确保已经过身份验证的呼叫者从受信任的站点请求?

1 个答案:

答案 0 :(得分:0)

一个选项可能是:

  1. 提供一项服务,在调用时,创建一个nonce并将其存储在服务器上的用户会话中,并将其返回给调用应用程序
  2. 在此之后的每个请求中,将nonce作为URL参数包含在请求的POSTed主体中(或在您使用的任何其他类型的消息中)
  3. 检查服务器的每个请求的此nonce
  4. 攻击者无法欺骗这一点,因为如果他调用上述服务,他将为自己的会话获得不同的令牌。只要此nonce不存储在cookie中,浏览器在向服务器发出请求时就不会自动提交。因此,只要攻击者无法猜测nonce(使用加密安全随机生成它),这应该可行。