ОБНОВЛЕНИЕ: GWT 2.3 вводит лучший механизм для борьбы с атаками XSRF. См http://code.google.com/webtoolkit/doc/latest/DevGuideSecurityRpcXsrf.htmlGWT RPC - Достаточно ли этого для защиты от CSRF?
механизм RPC GWT в делает следующие вещи на каждом HTTP Request -
- Sets два пользовательских заголовков запроса - X-GWT-перестановками и X-GWT-Module-Base
- Наборы контент-тип как text/x-gwt-rpc; charset = utf-8
HTTP-запрос - это всегда POST, а на стороне сервера методы GET генерируют исключение (метод не поддерживается).
Кроме того, если эти заголовки не установлены или имеют неправильное значение, сервер не обрабатывает обработку с исключением «возможно, CSRF?». Или что-то в этом роде.
Вопрос: достаточен ли для предотвращения CSRF? Есть ли способ установить пользовательские заголовки и изменить тип контента в чистом методе подделки на основе межсайтового запроса?
XmlHttpRequest, Flash и множество других технологий могут устанавливать пользовательские заголовки браузеров, но политика с одинаковым исходным кодом запускается и предотвратит создание другого сайта. Если на сервере нет lenient crossdomain.xml или возвращается Access-Control-Allow-Origin на произвольные веб-сайты, как будет работать запрос? Это оставляет нас только с формами/изображениями/iframe и т. П., Когда политика с одинаковым исходным кодом не применяется. Но я не знаю, как они могут настраивать пользовательские заголовки HTTP. Итак, как он уязвим? –
.. и да, я согласен с защитой csrf на основе токенов, это лучший способ, но я хотел бы понять недостаток с их подходом. –
@sri Очень хороший вопрос. Чтобы избавиться от этого эксплойта, вам нужно использовать малоизвестное свойство вспышки. Я опубликовал 2 эксплойта, которые делают то, что я описываю, я призываю вас использовать их. (Если у вас нет уязвимого программного обеспечения, по крайней мере, вы можете видеть, что запрос POST отправляется в другой домен, но сценарий не может «видеть» ответ из-за SOP) – rook