2011-06-03 60 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