我们使用带有webHttpBinding
绑定的 WCF 服务向客户端公开端点。服务由 IIS (.svc) 托管。enableWebScript
客户端是使用行为自动生成的 JavaScript 。所有方法都使用 POST。
是否可以对该服务进行 CSRF 攻击?
我考虑了以下选项:
- AJAX - 不可能,因为不允许跨站点请求(我假设我们的站点不容易出现 XSS)
- HTML 表单提交 - 不可能,因为服务需要某些无法使用 HTML 表单设置的 HTTP 标头
还有其他选择吗?Flash、Silverlight、网络套接字或其他东西?
有效请求如下所示:
POST http://site/Service.svc/ServiceMethod HTTP/1.1
Host: site
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: cs,en-us;q=0.8,en;q=0.5,pl;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
X-Requested-With: XMLHttpRequest
Content-Type: application/json; charset=utf-8
Referer: http://site/
Content-Length: 33
Cookie: cookies, session id, etc.
Pragma: no-cache
Cache-Control: no-cache
{"param1":11,"param2":"123"}
需要明确的是:我正在努力保护我的服务。不进行攻击。我正在考虑为每次通话添加一个“身份验证令牌”,但首先我想知道是否值得付出努力。