GWT: XSRF: Спорадически отсутствует заголовок X-GWT-Permutation - PullRequest
4 голосов
/ 25 марта 2011

Мое приложение получает случайные ошибки атаки XSRF, возникающие в GWT, когда RemoteServiceServlet.checkPermutationStrongName() не удается найти заголовок HTTP X-GWT-Permutation в HttpServletRequest.При возникновении ошибки в файле журнала появляется следующая строка:

WARNING: doUnexpectedFailure was invoked.
java.lang.SecurityException: Blocked request without GWT permutation header (XSRF attack?)

Проблема возникла в Firefox 3.x и 4.0 как в размещенном режиме, так и в веб-режиме.

Iзапустили Live Headers, и HTTP-заголовок действительно отсутствует.

Приложение является ванильным GWT RPC.

Есть идеи?

Отказ заголовков

http://127.0.0.1:8888/org.drools.guvnor.Guvnor/guvnorService

POST /org.drools.guvnor.Guvnor/guvnorService HTTP/1.1
Host: 127.0.0.1:8888
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.2.15) Gecko/20110303 Ubuntu/10.10 (maverick) Firefox/3.6.15
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-gb,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Content-Length: 154
Content-Type: text/x-gwt-rpc; charset=utf-8
Referer: http://127.0.0.1:8888/org.drools.guvnor.Guvnor/Guvnor.html?gwt.codesv...
Cookie: standalone_usage=true
Pragma: no-cache
Cache-Control: no-cache


7|0|4|http://127.0.0.1:8888/org.drools.guvnor.Guvnor/|
6808FDC8A4FA3491026441B59E4DB72A|
org.drools.guvnor.client.rpc.RepositoryService|subscribe|1|2|3|4|0|

HTTP/1.1 400 Bad Request
Content-Type: text/plain;charset=ISO-8859-1
Transfer-Encoding: chunked
Date: Wed, 23 Mar 2011 20:11:04 GMT
Server: Apache-Coyote/1.1
Connection: close

заголовки успеха

http://127.0.0.1:8888/org.drools.guvnor.Guvnor/guvnorService

POST /org.drools.guvnor.Guvnor/guvnorService HTTP/1.1
Host: 127.0.0.1:8888
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.2.15) Gecko/20110303 Ubuntu/10.10 (maverick) Firefox/3.6.15
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-gb,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
X-GWT-Permutation: HostedMode
X-GWT-Module-Base: http://127.0.0.1:8888/org.drools.guvnor.Guvnor/
Content-Type: text/x-gwt-rpc; charset=utf-8
Referer: http://127.0.0.1:8888/org.drools.guvnor.Guvnor/Guvnor.html?gwt.codesv...
Content-Length: 154
Cookie: standalone_usage=true
Pragma: no-cache
Cache-Control: no-cache


7|0|4|http://127.0.0.1:8888/org.drools.guvnor.Guvnor/|
41FA1D8B82DBBBC875605A4A29670D99|
org.drools.guvnor.client.rpc.RepositoryService|subscribe|1|2|3|4|0|

HTTP/1.1 200 OK
Content-Disposition: attachment
Content-Type: application/json;charset=utf-8
Content-Length: 48
Date: Wed, 23 Mar 2011 20:15:38 GMT
Server: Apache-Coyote/1.1 

Ответы [ 3 ]

5 голосов
/ 29 марта 2011

У меня такая же проблема с моим приложением.Похоже, что FireFox 3.x не отправляет дополнительный заголовок запроса при установке в объекте XmlHttpRequest!

Быстрое исправление этого в реализации RPC на методе переопределения на стороне сервера checkPermutationStrongName () с пустой реализацией.

@Override
protected void checkPermutationStrongName() throws SecurityException {
    return;
}

Я думаю, что мы должны сообщить об этом как о проблеме в FireFox, чтобы получить правильное решение.

1 голос
/ 05 апреля 2011

Исходя из моего опыта, FF иногда отбрасывает любой заголовок, который начинается с "X -".

0 голосов
/ 18 мая 2011

Эта ошибка впервые появилась в наших журналах 30 марта, поэтому она может быть связана с FF 4.0, я думаю (FF4 был отправлен 22.03)За несколько дней до этого мы также перешли с GWT 2.0.4 на 2.1.1.Это также может быть подсказкой.Наше приложение тщательно протестировано на производственной среде в течение 7 месяцев.Может быть, эта информация кому-нибудь поможет.Я искал способ обнаружения устаревшего приложения gwt в кеше браузера.Когда приложение развертывается на сервере, я проверяю имена перестановок, сгенерированные в текущей сборке, и сохраняю их в виде списка.Каждый RPC-запрос проверяется на наличие перестановки gwt, которой он был отправлен.С этой ошибкой мой механизм взорван.

...