2011-06-03 76 views
6

我刚刚开始将我的GWT-RPC代码移植到新的RequestFactory机制中。使用GWT的RequestFactory时防止CSRF

为了防止跨站请求伪造(CSRF),我的GWT-RPC代码抓取了存储在cookie中的会话ID,并将其包含在请求的有效负载中。这可能与RequestFactory

据我所知,有四个强制定位器的方法,包括findEntity(id_type id);所以我在想:哦亲爱的:我在哪里放我的会话ID?

回答

8

一般情况下,你会延长DefaultRequestTransport令牌添加到请求(如自定义标题,但你也可以把它添加到请求体),并将它传递给你的RequestFactoryinit。在服务器端,您将使用servlet过滤器,或者在处理RequestFactory请求之前扩展RequestFactoryServlet以处理令牌。您可以在这里自由定义您自己的“协议”:例如返回403或401状态(或其他),然后在RequestTransport中处理它以将结果传达给您的应用程序。

+0

很酷。服务器端的东西没有阶段我,但延长DefaultRequestTransport有点令人生畏。我可能会将会话ID添加为RequestBuilder上的标头吗? – David 2011-06-03 13:43:14

+1

最简单的方法确实是将它添加为标题(因此我在括号中注释:“例如自定义标题,但您也可以将其添加到请求正文中)。 – 2011-06-03 14:37:04